我有一个功能,比方说,callMe(args)
。我希望能够在同一时间内调用我的函数100次(并发编程)。我的函数是用简单的C编写的。我想在Windows和Linux上同时使用它。
标准C库中是否有内置支持?或者您可以提供一些建议,我应该如何在Linux / Windows中执行此操作?
pthread
对于Linux环境是否有用?
答案 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编译器非常支持它们。 Qt或Poco或Boost是一个跨平台的C ++库,特别是包装并发原语。
无论您使用何种并发机制,请注意synchronization问题。
你总是与并发同步,至少要等待每个并发或并行子计算的结果
答案 1 :(得分:0)
您必须为不同的平台使用不同的功能。 它与不同的浏览器类似,使用不同类型的css属性名称。
因此,对于linux / mac,您可以使用pthread
对于Windows,您使用CreateThread