C:multithreading

C中是否支持multithreading? 如果是,那我该怎么办? 是否有任何开源库可以让我这样做,并且是Mac OS X支持的库吗?

我没有找到任何文章说它得到了支持。

C本质上不是一种multithreading语言; 但是有很多库可以添加线程function。

  • pthreads是一个与任何POSIX系统兼容的库,因此OSX支持它。 我发现https://computing.llnl.gov/tutorials/pthreads/是一个很好的起点。

  • Win32有一个C的线程库,在http://msdn.microsoft.com/en-us/library/y6h8hye8(v=vs.80).aspx中描述。

  • 只要目标机器上安装了glib, Glib就会增加支持的线程,并且具有完全跨平台的优势。 这里有一些信息: http : //developer.gnome.org/glib/2.28/glib-Threads.html

无论线程如何,C都没有概念。 C Standard中没有线程支持。 有可用的扩展可以实现multithreading – 其中一个是pthreads。

请注意,因为C语言没有线程的自然支持,因为程序员必须处理所有事情,并且您不会受到保护,不会遇到任何multithreading编程的陷阱。

新方言 – C1X,将提供开箱即用的multithreading,如维基百科所述:

multithreading支持(_Thread_local存储类说明符,包括线程创建/管理function的头文件,互斥锁,条件变量和特定于线程的存储function,以及_Atomic类型限定符和不间断对象访问)。

如上所述,在最新的c – C99方言中不支持multithreading

我猜大多数Mac OS X上的multithreading编程都是在Objective-C或C ++中完成的,而不是简单的C.(我知道这不是你问过的问题的答案,但你可能想知道关于替代方案。)在Objective-C中,您将使用NSThread,或者在Snow Leopard以及后来的Grand Central Dispatch(GCD)中使用。 在C ++中,您可以使用来自boost.org的线程库,它具有跨平台的优势。

并行线程。 OSX有posix支持。