2010-07-13 67 views
2

我正在使用一种编程语言。目前它编译为C.我希望能够在本地语言中包含并行编程工具,以便利用多个内核。有没有办法编写跨平台的并行C程序?我宁愿坚持直C,以最大限度地提高语言编译平台的数量。如何在C中编写跨平台并行程序?

回答

3

使用一个跨平台的线程库,像pthreads

C没有标准的内置支持线程或并行处理。

+0

这是我最初的倾向,但Pthreads似乎在Windows上不完全支持。我实际上没有在Windows上试用它(我没有Windows盒子来试用它!),所以这可能需要进一步调查。 – kerkeslager 2010-07-13 16:59:53

+1

有一个pthreads for windows的版本,http://sourceware.org/pthreads-win32/ – Hasturkun 2010-07-13 17:13:08

+0

Pthreads也是编写并行程序的一个非常糟糕的方法。它为错误和性能缺陷提供了无数的机会。它代码的可组合性失败,除非正在编写的作品构造得非常仔细。 – Novelocrat 2010-08-02 13:41:08

0

“直C”没有线程的概念,所以我怕你的运气了。您需要找到某种跨平台的支持线程库,或者将一个端口用于您想要使用的各种平台。我猜,pthreads是最好的开始。

5

取决于你想要做什么,OpenMP可能为你工作。它由GCC,VC++,ICC等支持。

0

glib库(从GTK项目)有许多有用的跨平台服务,包括线程。

0

如果你正在寻找最终目标的大规模并行,看看Charm++和其底层便携机层匡威。我们可以在从多核台式机到群集的机器,到BlueGene和Cray超级计算机上高效运行。

+0

魅力++看起来很有趣,但它是一个C++工具。这个问题仅限于常规C. – bta 2010-08-02 16:55:22