【问题标题】:C: MultithreadingC:多线程
【发布时间】:2026-02-06 08:20:11
【问题描述】:

C 支持多线程吗?如果是,那我该如何尝试?是否有任何开源库可以让我这样做,Mac OS X 是否支持该库?

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

【问题讨论】:

标签: c multithreading macos


【解决方案1】:

C 本质上不是多线程语言;但是有许多库添加了线程功能。

【讨论】:

  • 我的意思是该语言可以用于线程。我会澄清的。
  • 顺便说一句,有一个win32版本的pthreads here
【解决方案2】:

C 没有任何线程的概念。 C 标准中没有线程支持。有一些可用的扩展可以实现多线程 - 其中之一是 pthreads。

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

【讨论】:

  • 哦,要小心 - 众所周知,一堆 C 函数不是线程安全的(即 localtime 等)操作系统通常提供像 localtime_r 这样的线程安全版本
  • _r 部分代表什么?比如,_t 用于 typedef'd。
  • 它代表可重入,呵呵。
【解决方案3】:

新的方言 - C1X,将提供开箱即用的多线程,正如*所述:

多线程支持(_Thread_local 存储类说明符、包含线程创建/管理功能的标头、互斥体、条件变量和线程特定的存储功能,以及 _Atomic 类型限定符和用于不间断对象访问)。

目前courae如上,c-C99最新方言不支持多线程

【讨论】:

    【解决方案4】:

    P线程。 OSX 支持 posix。

    【讨论】:

      【解决方案5】:

      我猜想 Mac OS X 上的大多数多线程编程都是用 Objective-C 或 C++ 完成的,而不是普通的 C。(我意识到这并不完全是对您提出的问题的回答,但您可能想了解替代方案。)在 Objective-C 中,您将使用 NSThread,或者在 Snow Leopard 和更高版本中,使用 Grand Central Dispatch (GCD)。在 C++ 中,您可以使用来自 boost.org 的线程库,它具有跨平台的优势。

      【讨论】: