首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于C++的用户模式同步库

用于C++的用户模式同步库
EN

Stack Overflow用户
提问于 2009-11-27 23:30:57
回答 3查看 1.1K关注 0票数 3

有没有人知道用于C++的Windows用户模式线程同步库(利用自旋锁/原子操作)?我只需要互斥锁(~临界区),但条件变量会更好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-28 21:11:46

谢谢你的回答。事实证明,将我对线程库大小的期望建立在boost的基础上并不是一个好主意,而是基于InterlockedExchange编写您自己的同步代码

票数 1
EN

Stack Overflow用户

发布于 2009-11-27 23:42:46

你有win 32之一:http://msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx。您已经完整地解释了如何使用这个库here进行同步。

票数 3
EN

Stack Overflow用户

发布于 2009-11-28 04:57:38

正如帕特里斯所说,你可以在用户模式下使用win32库(关键部分包含一个旋转的spin can )。

Visual Studio2010 Beta2 / Win7 x64包含并发运行时(ConcRT),它构建在用户模式调度线程上,允许ConcRT检测内核阻塞并切换到用户模式下的另一个任务(与典型的上下文交换相比,开销更低)。因此,例如,如果您在ConcRT中的任务上使用boost::thread及其条件变量和互斥锁,则这些将在用户模式下处理。

您还可以使用英特尔的线程构建块,其中包含一些用户模式自旋锁。没有条件变量。

Anthony Williams在他的网站上有一个std::thread for sale的实现,其中包括来自C++0x的原子库,如果你真的想构建自己的自旋锁。

一般来说,除非你正在做非常细粒度的同步,保证不会有太多的争用,否则我鼓励你明智地使用自旋锁,它们往往会“旋转”,并因此消耗系统cpu资源……

-Rick

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1809364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档