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

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

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

 

具体是什么意思呢;

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

}

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

posted @ 2018-02-01 10:25  瓜蛋  阅读(970)  评论(0编辑  收藏  举报