求助,线程死锁

artmouse 2005-02-22 03:35:01
我有个想法,假设辅助线程优先级是最低的,然后辅助线程这时候进入一个临界区中并且停了下来,这时候轮到主线程响应,这时候主线程在要进入被锁定的临界区,然后就停了下来,这样会不会死锁?
...全文
188 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
artmouse 2005-03-04
我看了win32多线程程序设计,我说的东西好像叫饥饿
回复
sboom 2005-02-23
这只是你的线程‘不运行了’不是‘不能运行’,不叫死锁,你控制辅助线程继续运行就行了。
回复
andyfr1210 2005-02-23
即使优先级再低的程序,操作系统也会给他执行的机会!

回复
hjunxu 2005-02-22
优先级再低也不代表永远不被执行。
回复
根据操作系统原理,临界区的设计必须是:
1。有界的,临界区不能无限大
2。有穷的,必须在一定的时间内退出
3。互斥的,必须互斥访问

根据2,一个访问线程不能在一个临界区内无限期的等待,否则其他线程不能进入临界区
即时线程时间片到了,转入非活动状态,临界区依然被占用
回复
sumjohn 2005-02-22
假设辅助线程优先级比主线程低很多会怎样?
____________________________________
这个时候主线程进入等待状态,不参与时间片竞争,与优先级无关
回复
artmouse 2005-02-22
不会。因为,辅助线程的时间片到了,临界区会执行完的。
~~~~~~~~~~~~~~~~~~~~~~~~~~
假设辅助线程优先级比主线程低很多会怎样?
回复
sumjohn 2005-02-22
辅助线程进入临界区后停下来干什么?
如果是等待一个主线程释放已占用的另一个临界区
则是死锁
可以温习一下操作系统的死锁的四个必要条件
回复
Wenxy1 2005-02-22
不会。因为,辅助线程的时间片到了,临界区会执行完的。
回复
相关推荐
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2005-02-22 03:35
社区公告
暂无公告