2010-07-13 34 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