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;}
全局变量
class CMultiThread_MutexApp : public CWinApp
{ public: CMultiThread_MutexApp();// 重写public: CMutex *g_clsMutex; char g_cArray[10]; virtual BOOL InitInstance();// 实现 DECLARE_MESSAGE_MAP()};