c线程;快速便携?

标签 c multithreading

ansi c99 中的线程。我正在寻找快速且跨平台的东西(或至少是 win/mac/linux)。我在这里有什么选择?

  • pthreads-32 看起来不再活跃(最后一次更新是在 2006 年)。

  • 我使用 MinGW 作为编译器,所以普通的 pthreads 可以工作吗?

  • Boost 很好,但仅限于 C++

  • protothreads 看起来很有前途?? http://www.sics.se/~adam/pt/

  • OpenMP 需要编译器支持,而且似乎非常适合我的需求。

  • 我正在使用 OpenCL;但在 CPU 上用于“简单线程”似乎真的很尴尬并且不支持所有内容(也就是说,创建一个线程来播放音乐真的很困难/不可能)。

最佳答案

首先,您使用的是 OpenCL,为什么 OpenMP 会“满足您的需求”?编译器支持不是问题。我相信没有不支持 OpenMP 的支持/“与”OpenCL 一起工作的编译器。

其次,pthreads-win32 可能看起来很旧,但它并不是多余的或“坏”的。许多项目仍然成功地使用该库。

我会使用这个列表(按偏好排序):

  1. OpenMP(简单、可移植)
  2. pthreads(可移植性)
  3. C++2011 线程又名 Boost.Thread(但在 C++ 中,而不是 C)
  4. POSIX 上的 pthreads,Windows 上的 Win32 线程。

顺便说一句,OpenCL 使用的内核不是完全独立的小程序,无论您如何在内核之外应用线程,它们都有自己的并行执行,具体取决于硬件?

关于c线程;快速便携?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746508/

相关文章:

c - 如何修复链表中传递参数地址错误

c++ - 将多个参数传递给线程函数 c++11

multithreading - 对信号量的 wait() 操作的实现感到困惑

c++ - 在运行时从应用程序读取调试信息

c - 在c中读取unicode文件

c - 我编写了一个程序来添加两个矩阵,但它不起作用。对出了什么问题有什么建议吗?

c# - 如何关闭第二个 UI 线程

在 C 中创建堆栈,节点结构

c# - 在两个不同的代码块使用相同的锁对象?

c# - 为什么 System.Timers.Timer 在触发 Elapsed 事件时会创建多个线程?