是否有任何情况下,任何人想要使用原始的NSThreads而不是GCD进行并发操作?我喜欢GCD,但我想知道在Cocoa / Cocoa-Touch中是否最终需要使用NSThreads。
是否有任何情况下,任何人想要使用原始的NSThreads而不是GCD进行并发操作?我喜欢GCD,但我想知道在Cocoa / Cocoa-Touch中是否最终需要使用NSThreads。
我使用pthread
来进行控制,它具有良好的性能和可移植性。有时您可能选择使用NSThread
,因为它提供了额外的NSObject
接口。
在一些更低级别的接口中,您需要通过使用API与线程协调(例如实时I/O或渲染)。在这种情况下,您有时可以灵活选择要使用的线程,有时使用NSThread
比较方便,因为可以轻松地使用CF或NS运行循环与这些接口配合使用。因此,在这些情况下,您设置在线程上运行的运行循环参数可能比线程本身更受API的关注。但是...大多数开发人员通常不必经常降到这个层次。
有时候会出现一些特殊情况,需要做一些无法通过GCD完成的奇怪事情。但是任何可以用GCD完成的事情,都应该采用这种方式(GCD和线程并不互斥,如果你确实需要使用线程,那么你无需改变现有的GCD代码)。
然而,我不确定什么情况下会出现这种特殊情况。也许你需要设置一个次要的专用RunLoop(不确定是否可以用GCD完成,但是使用线程肯定可以)。或者可能还有其他我目前想不到的特殊情况。