穿越C语言,跨平台

Dha*_*dya 14 c concurrency multithreading cross-platform

我正在处理当前在单个线程上运行的现有项目(在C中),我们希望在多个平台上运行并且具有多个线程.希望有一个库,因为,恕我直言,Win32 API就像是在反复盯着自己.我知道Boost.Thread for C++,但是,这必须是C(并且可以在MinGW和gcc上编译).对不起,Cygwin不是一个选择.

Cac*_*nta 10

尝试OpenMP API,它是多平台的,你可以用GCC编译它.

维基百科的简要描述:

OpenMP(开放式多处理)是一种应用程序编程接口(API),支持C,C++和Fortran中的多平台共享内存多处理编程,[3]适用于大多数平台,处理器体系结构和操作系统,包括Solaris,AIX, HP-UX,Linux,macOS和Windows.它由一组影响运行时行为的编译器指令,库例程和环境变量组成.

  • 在使用OpenMP一年多之后,我可以向所有阅读此问题的人保证,这是值得的. (4认同)

pap*_*jam 6

我会使用POSIX线程API - pthread.本文提供了一些在Windows上实现它的提示,以及一个仅限头文件的下载(BSD许可证):

http://locklessinc.com/articles/pthreads_on_windows/

编辑:过去我使用sourceforge pthreads-win32项目进行多平台线程处理,效果非常好.事情已经发生了变化,上面的链接似乎更新,尽管我还没有尝试过.这个答案当然假设你的非Windows目标上有pthreads(对于Mac/Linux我应该认为它们可能是嵌入式的)