自旋锁和mutex有什么区别

liuzu2016 2012-06-26 02:54:34
平台:windows

环境:mfc

有一个类叫CMutex,很方便用,可是总是会和CSingleLock放在一块。。

利用c++ 析构函数的特征,西沟的时候释放锁。

如:

CMutex rwMutex;
CSingle sLock(&rwMutex);
sLock.Lock();
....
sLock.UnLock();

有人把这个叫做自旋锁。 请问 自旋锁到底是什么???


问题2: 也可以自己实现一个CMyMutex,析构函数里实现unlock

根本不必依赖CSingleLock3类。

不知道我理解的对不对???

...全文
520 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-06-26
  • 打赏
  • 举报
回复
都是锁, 自旋锁就是一个像轮询的东西一样, 在某些线程切换频繁的设计里, 自旋比互斥效率高。
maeom 2012-06-26
  • 打赏
  • 举报
回复
对于互斥锁(mutex),如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁(spin)不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
赵4老师 2012-06-26
  • 打赏
  • 举报
回复
《Windows核心编程》

mk:@MSITStore:D:\MSDN98\98VS\2052\winbase.chm::/devdoc/live/pdwbase/synchro_6fn2.htm
About Synchronization
To synchronize access to a resource, use one of the synchronization objects in one of the wait functions. The state of a synchronization object is either signaled or nonsignaled. The wait functions allow a thread to block its own execution until a specified nonsignaled object is set to the signaled state.

The following are other synchronization mechanisms:

overlapped input and output
asynchronous procedure calls
critical section objects
interlocked variable access

wlnju 2012-06-26
  • 打赏
  • 举报
回复
http://baike.baidu.com/view/1250961.htm
我也不懂,但可以看看这里
HandanXiaoliang 2012-06-26
  • 打赏
  • 举报
回复
也可以用临界区实现吧
一样的,构造函数加锁,析构解锁

69,322

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧