普通C中的并发编程 - Windows / Linux

时间:2014-02-27 11:04:16

标签: c linux windows concurrency

我有一个功能,比方说,callMe(args)。我希望能够在同一时间内调用我的函数100次(并发编程)。我的函数是用简单的C编写的。我想在Windows和Linux上同时使用它。

标准C库中是否有内置支持?或者您可以提供一些建议,我应该如何在Linux / Windows中执行此操作?

pthread对于Linux环境是否有用?

2 个答案:

答案 0 :(得分:3)

您无法在纯标准C99中编写并发程序。并发编程不符合标准C99;它需要一些特定于操作系统的库。但是,最新的C11标准(今天很少实现,2014年2月 - 我都不知道!)开始增加对线程的支持。在Linux系统上,我建议今天坚持pthreads

您可以使用跨平台库(如glib中的GTK)来简化Windows和Linux之间的移植。在Linux上,它正在包装pthreads。

我不知道Windows,但传统上用于GUI应用程序的Glib和GTK可以实现Windows和Windows之间的源兼容编码。 Linux的功能

如果您的计算令人尴尬data parallel(就像某些矩阵数值计算一样),请同时考虑OpenCL(特别是因为它可以在GPGPUs)或OpenMP上运行。如果它符合message passing范例,请考虑MPI

传言OpenCL,OpenMP,MPI为Linux和Windows启用源兼容编码。

C++11(与C不同的语言)中,您获得了thread支持,GCC 4.8.2编译器非常支持它们。 QtPocoBoost是一个跨平台的C ++库,特别是包装并发原语。

无论您使用何种并发机制,请注意synchronization问题。

你总是与并发同步,至少要等待每个并发或并行子计算的结果

答案 1 :(得分:0)

您必须为不同的平台使用不同的功能。 它与不同的浏览器类似,使用不同类型的css属性名称。

因此,对于linux / mac,您可以使用pthread 对于Windows,您使用CreateThread