裕龙花园西区租房:VC 线程同步
来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 16:32:58
CEvent cEvent;
static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cEvent.SetEvent();return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];cEvent.Lock();for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cEvent.SetEvent();return 0;}
CMutex cMutex(FALSE,NULL);static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];cMutex.Lock();for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cMutex.UnLock();return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];cEvent.Lock();for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cMutex.UnLock();return 0;}
CRITICAL_SECTION hCritial;static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];EnterCritialSection(&hCritial);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}LeaveCritialSection(&hCritial);return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];EnterCritialSection(&hCritial);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}LeaveCritialSection(&hCritial);return 0;}
HANDLE hSema;hSema = CresteSemaphore(NULL,1,1,NULL);static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];WaitForSingleObject(hSema,INFINITE);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}ReleaseSemaphore(hSema,1,NULL);return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];WaitForSingleObject(hSema,INFINITE);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}ReleaseSemaphore(hSema,1,NULL);return 0;}void CEventSynchDlg::OnStartThread3() {AfxBeginThread(thread3,&m_result);}void CEventSynchDlg::OnStartThread4(){AfxBeginThread(thread4,&m_result);} DWORD CCreateMultiThreadDlg::ThreadFunOne(LPVOID lpParam)
{
WaitForSingleObject(hMutex,INFINITE);
CCreateMultiThreadDlg* pDlg = (CCreateMultiThreadDlg*)lpParam;
int low,high,pos;
pos = pDlg->m_ThreadOne.GetPos(); pDlg->m_ThreadOne.GetRange(low,high); while (pos {
pos = pDlg->m_ThreadOne.GetPos();
pDlg->m_ThreadOne.SetPos(pos+1);
}
pDlg->m_ThreadOne.SetPos(0);
return 0;
ReleaseMutex(hMutex);
} void CCreateMultiThreadDlg::OnCreatethread()
{
m_hThreadOne = CreateThread(NULL,100,ThreadFunOne,(void*)this,CREATE_SUSPENDED,NULL);
SetThreadPriority(m_hThreadOne,THREAD_PRIORITY_ABOVE_NORMAL);} void CCreateMultiThreadDlg::OnRunthread()
{
ResumeThread(m_hThreadOne);} void CCreateMultiThreadDlg::OnSuspendthread()
{
SuspendThread(m_hThreadOne);}
static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cEvent.SetEvent();return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];cEvent.Lock();for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cEvent.SetEvent();return 0;}
CMutex cMutex(FALSE,NULL);static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];cMutex.Lock();for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cMutex.UnLock();return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];cEvent.Lock();for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}cMutex.UnLock();return 0;}
CRITICAL_SECTION hCritial;static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];EnterCritialSection(&hCritial);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}LeaveCritialSection(&hCritial);return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];EnterCritialSection(&hCritial);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}LeaveCritialSection(&hCritial);return 0;}
HANDLE hSema;hSema = CresteSemaphore(NULL,1,1,NULL);static UINT thread3(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];WaitForSingleObject(hSema,INFINITE);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"A");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}ReleaseSemaphore(hSema,1,NULL);return 0;}static UINT thread4(LPVOID pParam){CEdit *p=(CEdit*)pParam;char buf[MAX_PATH];WaitForSingleObject(hSema,INFINITE);for(int i=0;i<20;i++){::SendMessage(p->GetSafeHwnd(),WM_GETTEXT,MAX_PATH,(LPARAM)buf);strcat(buf,"B");::SendMessage(p->GetSafeHwnd(),WM_SETTEXT,0,(LPARAM)buf);Sleep(200);}ReleaseSemaphore(hSema,1,NULL);return 0;}void CEventSynchDlg::OnStartThread3() {AfxBeginThread(thread3,&m_result);}void CEventSynchDlg::OnStartThread4(){AfxBeginThread(thread4,&m_result);} DWORD CCreateMultiThreadDlg::ThreadFunOne(LPVOID lpParam)
{
WaitForSingleObject(hMutex,INFINITE);
CCreateMultiThreadDlg* pDlg = (CCreateMultiThreadDlg*)lpParam;
int low,high,pos;
pos = pDlg->m_ThreadOne.GetPos(); pDlg->m_ThreadOne.GetRange(low,high); while (pos
pos = pDlg->m_ThreadOne.GetPos();
pDlg->m_ThreadOne.SetPos(pos+1);
}
pDlg->m_ThreadOne.SetPos(0);
return 0;
ReleaseMutex(hMutex);
} void CCreateMultiThreadDlg::OnCreatethread()
{
m_hThreadOne = CreateThread(NULL,100,ThreadFunOne,(void*)this,CREATE_SUSPENDED,NULL);
SetThreadPriority(m_hThreadOne,THREAD_PRIORITY_ABOVE_NORMAL);} void CCreateMultiThreadDlg::OnRunthread()
{
ResumeThread(m_hThreadOne);} void CCreateMultiThreadDlg::OnSuspendthread()
{
SuspendThread(m_hThreadOne);}
VC 线程同步
C#教程:线程同步
linux 线程同步实例
Visual C++线程同步技术
用户方式中线程的同步
Visual C++线程同步技术剖析
进程线程同步的四种方法
Linux之线程同步篇|Linux,线程同步-中国源码网: 开放源代码&&编程
多线程编程之四——线程的同步
VC中利用多线程技术实现线程之间的通信 - 开发者在线 - www.builder.com...
多线程编程之三——线程间通讯 - VC知识库文章
Windows线程同步与互斥技术总结 - 陆小小的专栏 - CSDNBlog
C#线程系列讲座(5):同步技术之Monitor - 哈佛校训 - 博客园
Windows核心编程(第五版)笔记 第九章 利用内核对象同步线程(Thread Sync...
网络游戏制作技术(五)—— 线程同步和服务器数据保护_沧海横流,方显英雄本色 风云变幻,引...
Windows核心编程(第五版)笔记 第八章 用户模式下的线程同步(Thread Sync...
用独立线程解决弹出模态对话框后执行自定义函数问题 - VC/MFC - 提供最全面实用的J...
VC+++用法汇总,VC技术文章,VC
c#线程相关概念
线程学习之笔记
java线程基础
进程和线程基础
超线程技术
Java中的线程组