在Cocoa中,NSThread是否比pthread更快?是否有任何性能提升?是忽略不计的吗?
答案 0 :(得分:10)
我没有数据可以支持这一点,但是我会说出“他们是等同的”。 NSThread
几乎肯定是围绕pthread包装的(实际上还有其他方法来创建系统线程吗?),因此使用NSThread
与pthread的任何开销都与创建新对象然后销毁相关联。它。一旦线程本身启动,它在性能方面就应该完全相同。
我认为这里真正的问题是:“为什么你需要知道?”您是否遇到过产生NSThread
似乎对您的表现有害的某些情况? (如果你产生了数百个线程,我可以看到这是一个问题,但在这种情况下,数百个线程很可能是你的问题,而不是NSThread
个对象)
除非您有证据表明创建NSThread
对象是您应用程序中的瓶颈,否则我肯定选择“可忽略忽略”选项。
答案 1 :(得分:1)
答案 2 :(得分:0)
在iPhone SDK下,NSThread使用pthread作为实际线程。坦率地说,它们是等价的。
但是,如果我们使用pthread API,我们可以通过pthread API访问“深度”设置。例如,调度方式,堆栈大小,分离与否等等。这些API由NSThread封装隐藏。
因此,在某些情况下,pthreads会赢。
答案 3 :(得分:0)
我还猜测,你为NSThread额外支付的任何“开销”或“实例化差异”都将通过额外的周期和最终需要执行的调用来平衡,使用pthread API正确配置pthread
我相信NSThread只不过是便利包装器,可以节省一些想要多线程的Cocoa / Cocoa-touch应用程序的编码。