互斥锁,怎么加锁和解锁?

rbldevil 2015-07-25 06:30:45
[size=14px]对一个缺省属性的互斥锁

假设两个线程同时要求加锁,只有其中之一能得到锁,另一个线程就阻塞,直到锁被释放,得到锁。。(我没理解错吧)

但是我设计了两个线程AB并发:

线程A是个循环过程(下面我省写了):
for(;;)
{
lock();
....//代码
unlock();
}
线程B:
{
.....lock();
........
}

//下面我就不懂了,要是一开始是A得到了锁,他循环一遍又一遍,过程上明明解锁了,但是线程B始终得不到锁,只有A线程循环结束后,B才能得到锁。。。
//这是为什么呢?难道循环过程不会被调度出去吗?还是处于什么设计呢?求大神告知
[/size]
...全文
292 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rbldevil 2015-07-25
  • 打赏
  • 举报
回复
引用 2 楼 lm_whales 的回复:
3)锁有没有初始化
ok,thanks
lm_whales 2015-07-25
  • 打赏
  • 举报
回复
3)锁有没有初始化
lm_whales 2015-07-25
  • 打赏
  • 举报
回复
互斥锁是任何一个获得,另一个就得不到 如果加了互斥锁,不能互斥 1)看是否同一把锁,两把不同的锁,达不到互斥目的 2)有没有其他地方也在加锁

70,023

社区成员

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

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