社区
C++ 语言
帖子详情
如果一个拥有mutex的线程在线程函数结束前并没有调用ReleaseMutex释放此mutex,那这个mutex还能被其他线程所拥有吗?
pop1210
2009-05-02 03:31:41
如果一个拥有mutex的线程在线程函数结束前并没有调用ReleaseMutex释放此mutex,那这个mutex还能被其他线程所拥有吗?
...全文
145
4
打赏
收藏
如果一个拥有mutex的线程在线程函数结束前并没有调用ReleaseMutex释放此mutex,那这个mutex还能被其他线程所拥有吗?
如果一个拥有mutex的线程在线程函数结束前并没有调用ReleaseMutex释放此mutex,那这个mutex还能被其他线程所拥有吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pop1210
2009-05-02
打赏
举报
回复
hairetz,呵呵,不一定..
pop1210
2009-05-02
打赏
举报
回复
对,是有别的线程释放掉.
那为什么非mutex拥有权的线程可以释放掉其他线程拥有的mutex??
msdn上说不能来者。。。
还有一点就是拥有mutex的线程如果没有释放它,就相当于放弃它了,这样的放弃会执行些什么操作呢?
猫已经找不回了
2009-05-02
打赏
举报
回复
答案肯定是不能,但是你这种死锁也太低级了。
qqwx_1986
2009-05-02
打赏
举报
回复
不能,除非还有别的线程能够释放掉
这也是造成死锁的原因之一
Win32多
线程
开发(Critical,Event,
Mutex
,Semphore)
一.
Mutex
相关的API:HANDLE Create
Mutex
(PSECURITY_ATTRIBUTES psa, BOOL fInitialOwner, PCTSTR pszName);HANDLE Open
Mutex
(DWORD fdwAccess, BOOL bInheritHandle, PCTSTR pszName);HANDLE
Create
Mutex
、WaitForSingleObject、
Release
Mutex
我们对
线程
做一些简单的同步处理,这里我们用互斥量(
Mutex
)。 互斥量(
Mutex
)和二元信号量类似,资源仅允许
一个
线程
访问。与二元信号量不同的是,信号量在整个系统中可以被任意
线程
获取和
释放
,也就是说,同
一个
信号量可以由
一个
线程
获取而由另一
线程
释放
。而互斥量则要求哪个
线程
获取了该互斥量锁就由哪个
线程
释放
,其它
线程
越俎代庖
释放
互斥量是无效的。 在使用互斥量进行
线程
同步时会用到以下几个
函数
: HANDLE WINAPI Create
Mutex
( LPSECURITY_ATTRIBUTES lpMute
Mutex
互斥锁-出现被放弃的
mutex
背景:同时开启两个
线程
调用
同一
函数
,使用
Mutex
来保证
一个
线程
独占
一个
资源的访问。因为某些需求,临时abort了thread1 ,这时程序报错,—出现被放弃的
mutex
static
Mutex
mutex
; static Thread thread1, thread2; static void Main(string[] args) { //// Create a new
Mutex
...
再说多
线程
(三)——
Mutex
类
在
前
面2节,我们已经讨论了Lock语句和Monitor类,Locks 和 Monitors 确保 InProcess
线程
的
线程
安全,即由应用程序本身生成的
线程
,即内部
线程
。但是,如果
线程
来自 OutProcess,即来自外部应用程序,那么 Locks 和 Monitors 将无法控制它们。而
Mutex
确保进程外
线程
的
线程
安全,即由外部应用程序生成的
线程
,即外部
线程
。可能
前
面一段是说的不是很明白,什么是内部进程和外部进程呢?让我们首先创建
一个
控制台应用程序,然后将以下代码复制并粘贴到其中。
Create
Mutex
、WaitForSingleObject、
Release
Mutex
——创建互斥对象
Create
Mutex
Create
Mutex
作用是找出当
前
系统是否已经存在指定进程的实例。如果
没有
则创建
一个
互斥体。 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个
线程
的访问权 互斥对象的结构:包含了
一个
使用数量,
一个
线程
ID,
一个
计数器 使用数量是指有多少个
线程
在
调用
该对象,
线程
ID是指互斥对象维护的
线程
的ID 计数器表示当
前
线程
调用
该对象的次数 声明 HANDLE CreateMu...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章