MFC信号量使用指南

来源:互联网 发布:手机免费阅读软件 编辑:程序博客网 时间:2024/05/18 02:14

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中信号量的运用!

0 0