作者srxrrr (幹!我是肌董)
看板C_and_CPP
標題Re: [問題] Mutex的基本用法(MFC)
時間Thu Mar 12 15:01:04 2015
平台: VS2010
函式庫: MFC
======================================================
謝謝大家前一篇提供的寶貴意見
現在我做了一個簡單的程式來測試Mutex的功能:
同一個程式開兩次(以下假設為A與B)
當按下A的Button1時 開始計數5秒並秀於螢幕
在5秒之內 也按下B的Button1
會發現B會等A計數完 才開始動作
但有時候(並不是每次發生) B開始動作時
整個程式會卡住 並在視窗上顯示"沒有回應"
等到計數完後 才可繼續使用B...
不知道是哪裡出了問題 = =a
以下為我的程式碼 希望各位熱心的板友 能提供點意見
感激不盡!!
CMutex mutex(false,_T("Hughes")); //聲明一個具名的Mutex
void CMutextestDlg::OnBnClickedButton1()
{
mutex.Lock(); //鎖住執行緒
//計數5秒
CString str;
for(int i=0;i<=5;i++)
{
str.Format(_T("%d"),i);
SetDlgItemText(IDC_STATIC,str);
Sleep(1000);
}
SetDlgItemText(IDC_STATIC,_T("End")); //代表計數完成
mutex.Unlock(); //開放執行緒
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.212.97
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1426143667.A.C38.html
推 Dforce: 你這個會鎖住 window message thread 然後就GG了 03/12 15:15
謝謝D大回覆@@ 天阿...那請問我該如何修正呢 謝謝!!
※ 編輯: srxrrr (211.72.212.97), 03/13/2015 09:32:09
推 ajax1218: 卡住跟MUTEX無關,請create thread執行去計數 04/20 21:22