如何杀死目标C主题?(How to kill a Thread with Objective C?)

2019-07-04 02:11发布

我有一个第三方的C ++库,我已经(目前使用NSThread)放入自己的线程调用。 我想给用户停止该线程的执行能力。 (我深知这一切可能导致的问题,但我还是希望这样做。)

根据苹果的线程编程指南 ,有可可准备这样做。 这是真的为iPhone也一样,或者我要依靠POSIX线程实现我的目标?

干杯

MrMage

Answer 1:

正确的做法应该停止你的线程执行是要求它很好地停止执行。 然后,在你的线程,你听这样的请求,并在适当的时候服从他们。

当你链接到网页非常说:

虽然可可,POSIX,和多服务提供程序直接杀线程,使用这种程序的强烈反对。 杀死一个线程阻止了线程本身后清理。 该线程所分配的内存可能被泄露,目前在由线程使用的任何其他资源可能没有被正确清理,后来产生的潜在问题。

如果预计需要终止线程在操作过程中,你应该从一开始就设计你的线程来取消或退出的消息作出回应。 对于长时间运行的操作,这可能意味着周期性停止工作,检查,看看如果这样的消息到达。 如果消息不进来,询问线程退出,该线程将不得不执行任何所需的清理和退出优雅的机会; 否则,它可以简单地回去工作和处理数据的下一块。



文章来源: How to kill a Thread with Objective C?