首页 > 代码库 > MFC信号量使用指南
MFC信号量使用指南
DEMO程序: TestSemaphore_DEMO.rar
源代码: TestSemaphore_SRC.rar
---关键代码如下---
void CTestSemaphoreDlg::OnBnClickedButtonThread1() { // TODO: 在此添加控件通知处理程序代码 AfxBeginThread((AFX_THREADPROC)thread1WriteA, this); } void CTestSemaphoreDlg::OnBnClickedButtonThread2() { // TODO: 在此添加控件通知处理程序代码 AfxBeginThread((AFX_THREADPROC)thread2WriteB, this); } void CTestSemaphoreDlg::OnBnClickedButtonThread3() { // TODO: 在此添加控件通知处理程序代码 AfxBeginThread((AFX_THREADPROC)thread3WriteC, this); } UINT CTestSemaphoreDlg::thread1WriteA( LPVOID pParam ) { CTestSemaphoreDlg* pThis = (CTestSemaphoreDlg*)pParam; pThis->WriteA(); return 0; } void CTestSemaphoreDlg::WriteA() { CString str; g_semaphore.Lock(); for (int i=0; i<5; i++) { Sleep(500); m_editDisp.GetWindowText(str); str += "A"; m_editDisp.SetWindowText(str); } g_semaphore.Unlock(); } UINT CTestSemaphoreDlg::thread2WriteB( LPVOID pParam ) { CTestSemaphoreDlg* pThis = (CTestSemaphoreDlg*)pParam; pThis->WriteB(); return 0; } void CTestSemaphoreDlg::WriteB() { CString str; g_semaphore.Lock(); for (int i=0; i<5; i++) { Sleep(500); m_editDisp.GetWindowText(str); str += "B"; m_editDisp.SetWindowText(str); } g_semaphore.Unlock(); } UINT CTestSemaphoreDlg::thread3WriteC( LPVOID pParam ) { CTestSemaphoreDlg* pThis = (CTestSemaphoreDlg*)pParam; pThis->WriteC(); return 0; } void CTestSemaphoreDlg::WriteC() { CString str; g_semaphore.Lock(); for (int i=0; i<5; i++) { Sleep(500); m_editDisp.GetWindowText(str); str += "C"; m_editDisp.SetWindowText(str); } g_semaphore.Unlock(); }
MFC信号量使用指南
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。