2012-11-27 25 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