void CMultiThread_MutexDlg::TestThreadMutex() { // CMutex g_clsMutex(FALSE,NULL); // g_clsMutex=CMutex(FALSE,NULL); theApp.g_clsMutex=new CMutex(false,_T("abc")); AfxBeginThread(ThreadProc27,NULL); AfxBeginThread(ThreadProc28,NULL); Sleep(300); CString sResult=CString(theApp.g_cArray); int ll=sResult.GetLength(); AfxMessageBox(sResult); delete theApp.g_clsMutex; } UINT CMultiThread_MutexDlg::ThreadProc27(LPVOID pParam) { theApp.g_clsMutex->Lock(); for(int i=1;i<10;i++) { theApp.g_cArray[i]='a'; Sleep(1); } theApp.g_clsMutex->Unlock(); return 0; } UINT CMultiThread_MutexDlg::ThreadProc28(LPVOID pParam) { theApp.g_clsMutex->Lock(); for(int i=0;i<1;i++) { theApp.g_cArray[i]='b'; Sleep(1); } theApp.g_clsMutex->Unlock(); return 0; }
全局變量spa
class CMultiThread_MutexApp : public CWinApp
{
public:
CMultiThread_MutexApp();
// 重寫
public:
CMutex *g_clsMutex;
char g_cArray[10];
virtual BOOL InitInstance();
// 實現
DECLARE_MESSAGE_MAP()
};code