2012-11-27 26 views
-2

在C編程中...無PThreads的同步

是否有任何庫在那裏並行化和同步代碼而不使用POSIX線程?

我聽說過OpenMP。但是,在查看hello world實現的符號表後,我發現OpenMP只是一個建立在PThreads上的庫。

編輯
參見下@ tmyklebu的回答我的評論

+0

你使用什麼平臺?編譯器?編譯器版本?如果GCC你可能喜歡[threads.h](http://en.wikipedia.org/wiki/C11_(C_standard_revision)),請參見[這個問題](http://stackoverflow.com/questions/8859394/c11-thread -h-in-gcc) – 2012-11-27 22:37:53

+0

我在一臺Linux機器上,英特爾處理器--4核心,gcc-4.7 – iGbanam

回答

0

我想我的問題是「爲什麼你要避免並行線程?」 pthreads爲您提供了一個內核線程和同步原語的理智和可移植的界面。這樣說,直接使用你的平臺的本地原子內建函數(cmpxchg或LL/SC或你有什麼)常常是有用的,因爲內核有時沒有理由參與你的同步。

在Linux上,請查看futex系統調用。

英特爾發佈此「線程構建塊」的東西。 AMD有類似的東西。我幾乎沒有用過,所以我不會評論他們。

MPI也是一件事情。

+0

是的,MPI看起來很有前途,但我正在尋找一種不是PThreads的線程實現,並行線程。見PThreads需要一些時間來獲取鎖(更多時旋轉)。這些數字是好還是壞?沒有人會知道,除非有競爭對手做得更好或更糟;因此搜索,因此這個問題。 – iGbanam

+0

@Yasky如果你正在尋找關於鎖的基準測試,你可能想檢查[this](http://locklessinc.com/articles/locks/)。 – 2012-11-27 22:39:39