pthread vs NSThread:速度更快

时间:2010-01-14 20:38:39

标签: c++ cocoa multithreading pthreads nsthread

在Cocoa中,NSThread是否比pthread更快?是否有任何性能提升?是忽略不计的吗?

4 个答案:

答案 0 :(得分:10)

我没有数据可以支持这一点,但是我会说出“他们是等同的”。 NSThread几乎肯定是围绕pthread包装的(实际上还有其他方法来创建系统线程吗?),因此使用NSThread与pthread的任何开销都与创建新对象然后销毁相关联。它。一旦线程本身启动,它在性能方面就应该完全相同。

我认为这里真正的问题是:“为什么你需要知道?”您是否遇到过产生NSThread似乎对您的表现有害的某些情况? (如果你产生了数百个线程,我可以看到这是一个问题,但在这种情况下,数百个线程很可能是你的问题,而不是NSThread个对象)

除非您有证据表明创建NSThread对象是您应用程序中的瓶颈,否则我肯定选择“可忽略忽略”选项。

答案 1 :(得分:1)

实际上pthreads的开销略低,但我无法想象它会在实践中产生任何影响。 NSThread使用下面的pthreads。线程中代码的实际执行速度对于两者都是相同的。

答案 2 :(得分:0)

在iPhone SDK下,NSThread使用pthread作为实际线程。坦率地说,它们是等价的。

但是,如果我们使用pthread API,我们可以通过pthread API访问“深度”设置。例如,调度方式,堆栈大小,分离与否等等。这些API由NSThread封装隐藏。

因此,在某些情况下,pthreads会赢。

答案 3 :(得分:0)

我还猜测,你为NSThread额外支付的任何“开销”或“实例化差异”都将通过额外的周期和最终需要执行的调用来平衡,使用pthread API正确配置pthread

我相信NSThread只不过是便利包装器,可以节省一些想要多线程的Cocoa / Cocoa-touch应用程序的编码。