MFC多线程处理:CSemaphore
2017-12-22 10:19
155 查看
MFC多线程处理:CSemaphore
flyfish
写数据最多同时只能运行2个线程,启动3个线程来处理写数据
执行过程:2个线程处理完,再执行第3个线程
声明
实现部分
flyfish
写数据最多同时只能运行2个线程,启动3个线程来处理写数据
执行过程:2个线程处理完,再执行第3个线程
声明
UINT WriteA(LPVOID pParam); UINT WriteB(LPVOID pParam); UINT WriteC(LPVOID pParam);
实现部分
CSemaphore g_semaphoreWrite(2,2); CString g_strTextA; CString g_strTextB; CString g_strTextC; UINT WriteA(LPVOID pParam) { CEdit *pEdit=(CEdit*)pParam; pEdit->SetWindowText(_T("")); g_semaphoreWrite.Lock(); // WaitForSingleObject(g_semaphoreWrite.m_hObject,INFINITE); CString n; for (int i = 0; i<3; i++) { n.Format(L"%d", i); g_strTextA = L"A:" + n; pEdit->SetWindowText(g_strTextA); Sleep(1000); } //ReleaseSemaphore(g_semaphoreWrite.m_hObject,1,NULL); g_semaphoreWrite.Unlock(); return 0; } UINT WriteB(LPVOID pParam) { CEdit *pEdit=(CEdit*)pParam; pEdit->SetWindowText(L""); g_semaphoreWrite.Lock(); //WaitForSingleObject(g_semaphoreWrite.m_hObject,INFINITE); CString n; for (int i = 0; i<3; i++) { n.Format(L"%d", i); g_strTextB = L"B:" + n; pEdit->SetWindowText(g_strTextB); Sleep(1000); } g_semaphoreWrite.Unlock(); //ReleaseSemaphore(g_semaphoreWrite.m_hObject,1,NULL); return 0; } UINT WriteC(LPVOID pParam) { CEdit *pEdit=(CEdit*)pParam; pEdit->SetWindowText(_T("")); g_semaphoreWrite.Lock(); //WaitForSingleObject(g_semaphoreWrite.m_hObject,INFINITE); CString n; for(int i=0;i<3;i++) { n.Format(L"%d", i); g_strTextC = L"C:" + n; pEdit->SetWindowText(g_strTextC); Sleep(1000); } g_semaphoreWrite.Unlock(); //ReleaseSemaphore(g_semaphoreWrite.m_hObject,1,NULL); return 0; } void CXXX::OnBnClickedStart() { CWinThread *pWriteA=AfxBeginThread(WriteA, &m_Edit_ctlA, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); pWriteA->ResumeThread(); CWinThread *pWriteB=AfxBeginThread(WriteB, &m_Edit_ctlB, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); pWriteB->ResumeThread(); CWinThread *pWriteC=AfxBeginThread(WriteC, &m_Edit_ctlC, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); pWriteC->ResumeThread(); }
相关文章推荐
- [原创]MFC中的多线程处理问题总结
- MFC多线程处理:CEvent
- [原创]MFC中的多线程处理问题总结
- 在vs10中处理多线程MFC遇到的问题
- threading 多线程控制和处理
- BOOST 库 thread类线程使用 多线程处理的理解
- MFC 多线程及线程同步
- linux下多线程和信号处理
- 如何处理多线程并发的问题
- MFC的消息处理函数
- MFC中的多线程
- 使用MFC中的AfxBeginThread创建多线程
- 多线程MFC
- vc2005/MFC-添加不常用的消息的消息处理函数/消息处理函数.
- MFC 多线程及线程同步
- MFC处理jpg等格式图片 IPicture接口(一)
- C++--MFC的SDI程序的用户命令的处理顺序
- MFC多线程
- 多线程编程3 基础(MFC)
- java处理多线程并发