Objective c NSThread与pthreads

Objective c NSThread与pthreads,objective-c,cocoa-touch,pthreads,nsthread,Objective C,Cocoa Touch,Pthreads,Nsthread,NSThread和pthread之间有什么区别?NSThread是否使用pthread作为其内部实现,并且当pthread足够时,我们是否真的需要额外的NSThread开销,特别是在iPhone上。我不确定NSThread是否在内部使用pthreads库。它可能有,但是因为我们没有NSThread的源代码,所以我们真的不知道 区别在于pthread是一个C库,NSThread是一个Objective-C库。但它们都实现了相同的功能 如果需要将Objective-C库与Objective-CAPI

NSThread和pthread之间有什么区别?NSThread是否使用pthread作为其内部实现,并且当pthread足够时,我们是否真的需要额外的NSThread开销,特别是在iPhone上。

我不确定
NSThread
是否在内部使用pthreads库。它可能有,但是因为我们没有
NSThread
的源代码,所以我们真的不知道

区别在于
pthread
是一个C库
NSThread
是一个Objective-C库。但它们都实现了相同的功能


如果需要将Objective-C库与Objective-CAPI的其他部分结合使用,则需要使用Objective-C库。也就是说,您将无法将pthread存储在
NSArray

据我所知,NSThread不使用p-threads,除非苹果已经彻底改变了现状。对于POSIX标准来说,OOPC的起源还为时过早(我认为pthreads是在1c中出现的,那是1995年)。这是对当前Objective-C运行时的众多批评之一。但是,您可以通过标准C库访问Objective-C中的pthreads。实际上,我们在一个项目中做出了这一假设,并在与使用pthreads构建的库交互时遇到了问题(这是围绕着使用
NSNotificationQueue
运行循环)。Pthreads可以为线程管理和同步提供更灵活、更强大的机制,比如等待另一个线程完成等等。我正在查看崩溃时的一些调用堆栈,其中充满了Pthreads。这并不意味着NStand使用pType,但这说明:<代码> NStRead OrthActhy+ + 1024 < /代码>,<代码> 7 LyStuleSpth.DyLIB,pthRead主体+240 < /C>,<代码> 8 LyStuleSpthy.DyLIB,pthRead体+282<代码>,<代码> 9 LyStuleSpPyth.DyLIB THEADLIGHEST+4 >我不知道,但NSThread最初使用的不是pthreads(例如直接使用Mach线程API),这是完全合理的。但我认为今天它很可能实际使用pthread。证据:/System/Library/Frameworks/Foundation.framework/Foundation包含字符串“NSThread*\u NSThreadGet0(pthread\u t)”。看起来像是将pthread转换为NSThread的未记录API?这意味着NSThread可能只是一个pthread包装器(反过来它只是Mach线程的包装器),我认为它使用pthread。请参阅我在@Pablo's Response上发布的调用堆栈。