In Cocoa, is NSThread faster than pthread? is are any performance gain? is it negligible to ignore?
pthreads actually have slightly less overhead, but I can't imagine it will make any difference in practice. NSThread uses pthreads underneath. The actual execution speed of the code in your thread will be the same for both.
I have no data to back this up, but I'm going to go out on a limb and say "they're equivalent". NSThread
is almost certainly wrapper around pthread (is there really any other way to create a system thread?), so any overhead of using NSThread
versus pthread would be that associated with creating a new object and then destroying it. Once the thread itself starts, it should be pretty much identical in terms of performance.
I think the real question here is: "Why do you need to know?" Have you come up against some situation where spawning NSThread
s seems to be detrimental to your performance? (I could see this being an issue if you're spawning hundreds of threads, but in that case, the hundreds of threads are most likely your problem, and not the NSThread
objects)
Unless you have proof that the creation of an NSThread
object is a bottleneck in your application, I would definitely go with the "negligible to ignore" option.
Under iPhone SDK, NSThread uses pthread as an actual thread. Frankly, they're equivalent.
However, we can access "deep" settings via pthread APIs if we use pthread API. For example, scheduling way, stack size, detached or not, etc. These API are hidden by NSThread capsule.
Therefore, under some conditions, pthreads win.