这段小代码是做什么的?

malone1 2009-05-08 10:50:02
CSingleLock singleLock(&m_mutex);
singleLock.Lock();
while(!singleLock.IsLocked())
{
Sleep(100);
singleLock.Lock();
}

if (singleLock.IsLocked())
{
....
}
return 0;
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫龙超超 2012-07-05
  • 打赏
  • 举报
回复
如果没有锁,就等一会儿,锁上;然后看看锁没锁上,如果没锁上,继续锁。
crst_zh 2009-05-08
  • 打赏
  • 举报
回复
lock,直到成功lock了,然后才操作啊。
k1988 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ilysony 的回复:]
尝试去获得锁

如果得到锁,进行循环?
[/Quote]

你么有看清楚,(!singleLock.IsLocked()) ,这里面是逻辑非。
Sou2012 2009-05-08
  • 打赏
  • 举报
回复
尝试去获得锁

如果得到锁,进行循环?
k1988 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 malone1 的回复:]
引用 1 楼 sencrus 的回复:
检查是否lock,如果没有,则循环lock,

则循环lock有什么用?
[/Quote]

循环的去尝试lock,如果没有猜错这个类是用来等待m_mutex这个互斥量空闲的。

CSingleLock singleLock(&m_mutex); //创建一个单锁类
singleLock.Lock(); //先尝试进行对m_mutex进行占用
while(!singleLock.IsLocked()) //判断是否已经对m_mutex进行占用成功
{
Sleep(100); //如果没有成功刚说明,其它线程的代码占用了m_mutex这个互斥量,就将本线程睡眠100ms
singleLock.Lock(); //继续尝试占用
}

if (singleLock.IsLocked()) //上面的循环执行完成后,一般来说对m_mutex进行占用就应该成功了,这儿多了一个判断,我认为这个判断可有可无
{
....
}
return 0;
liao05050075 2009-05-08
  • 打赏
  • 举报
回复
这是有关多线程的。
建议LZ搜索一下这方面的内容
malone1 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sencrus 的回复:]
检查是否lock,如果没有,则循环lock,
[/Quote]
则循环lock有什么用?
wrinky 2009-05-08
  • 打赏
  • 举报
回复
检查资源是否被lock了,多线程资源同步中用的比较多
Paradin 2009-05-08
  • 打赏
  • 举报
回复
搞不清楚。mark
sencrus 2009-05-08
  • 打赏
  • 举报
回复
检查是否lock,如果没有,则循环lock,
Sou2012 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 k1988 的回复:]
引用 7 楼 ilysony 的回复:
尝试去获得锁

如果得到锁,进行循环?


你么有看清楚,(!singleLock.IsLocked()) ,这里面是逻辑非。
[/Quote]

没错啊,尝试去获得,如果没有被锁定,就得到了锁

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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