导致线程死锁容易忽略的一点 SendMessage

多线程中界面更新与死锁问题
本文探讨了在多线程编程环境下,主线程中的按钮点击事件触发的操作可能与另一线程共享变量之间的交互导致死锁的情况。特别关注了在尝试更新UI时如何避免因线程同步不当而引发的问题。

假如主线程 某一个按钮 点击的 响应要操作与另一个线程共享的 变量。

在这个点击响应里先lock 之后,假如另一个线程的变量正在 “使用”状态,并且内部又调用了SendMessage试图更新界面的某些东西,这样就会造成SendMessage阻塞和Lock Mutex的死锁阻塞。

 

具体是什么意思呢;

void OnBtnClick()
{
lock()
DoSomethine()
unlock()

}

void DoSomethine()
{
::SendMessage(hwnd,WM_LOG,0,L"Hello");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值