我有一个第三方的C ++库,我已经(目前使用NSThread)放入自己的线程调用。 我想给用户停止该线程的执行能力。 (我深知这一切可能导致的问题,但我还是希望这样做。)
根据苹果的线程编程指南 ,有可可准备这样做。 这是真的为iPhone也一样,或者我要依靠POSIX线程实现我的目标?
干杯
MrMage
我有一个第三方的C ++库,我已经(目前使用NSThread)放入自己的线程调用。 我想给用户停止该线程的执行能力。 (我深知这一切可能导致的问题,但我还是希望这样做。)
根据苹果的线程编程指南 ,有可可准备这样做。 这是真的为iPhone也一样,或者我要依靠POSIX线程实现我的目标?
干杯
MrMage
正确的做法应该停止你的线程执行是要求它很好地停止执行。 然后,在你的线程,你听这样的请求,并在适当的时候服从他们。
当你链接到网页非常说:
虽然可可,POSIX,和多服务提供程序直接杀线程,使用这种程序的强烈反对。 杀死一个线程阻止了线程本身后清理。 该线程所分配的内存可能被泄露,目前在由线程使用的任何其他资源可能没有被正确清理,后来产生的潜在问题。
如果预计需要终止线程在操作过程中,你应该从一开始就设计你的线程来取消或退出的消息作出回应。 对于长时间运行的操作,这可能意味着周期性停止工作,检查,看看如果这样的消息到达。 如果消息不进来,询问线程退出,该线程将不得不执行任何所需的清理和退出优雅的机会; 否则,它可以简单地回去工作和处理数据的下一块。