Windows多线程多任务设计初步3
来源:互联网 发布:抗风柱计算软件 编辑:程序博客网 时间:2024/04/30 19:21
http://www.study888.com/computer/pro/vc/system/200506/39136_3.html
#include "afxmt.h"
int array[10],destarray[10];
CMutex Section;
/////////////////////////////////////////////////////////////
UINT WriteThread(LPVOID param)
{ CsingleLock singlelock;
singlelock (&Section);
singlelock.Lock();
for(int x=0;x<10;x++)
array[x]=x;
singlelock.Unlock();
}
UINT ReadThread(LPVOID param)
{ CsingleLock singlelock;
singlelock (&Section);
singlelock.Lock();
For(int x=0;x<10;x++)
Destarray[x]=array[x];
singlelock.Unlock();
}
3. 信号量
信号量的用法和互斥的用法很相似,不同的是它可以同一时刻允许多个线程访问同一个资源,创建一个信号量需要用Csemaphore类声明一个对象,一旦创建了一个信号量对象,就可以用它来对资源的访问技术。要实现计数处理,先创建一个CsingleLock或CmltiLock对象,然后用该对象的Lock()函数减少这个信号量的计数值,Unlock()反之。下面的代码分别启动三个线程,执行时同时显示二个消息框,然后10秒后第三个消息框才得以显示。
/////////////////////////////////////////////////////////////////
Csemaphore *semaphore;
Semaphore=new Csemaphore(2,2);
HWND hWnd=GetSafeHwnd();
AfxBeginThread(threadProc1,hWnd);
AfxBeginThread(threadProc2,hWnd);
AfxBeginThread(threadProc3,hWnd);
//////////////////////////////////////////////////////////////////////
UINT ThreadProc1(LPVOID param)
{CsingleLock singelLock(semaphore);
singleLock.Lock();
Sleep(10000);
::MessageBox((HWND)param,"Thread1 had access","Thread1",MB_OK);
return 0;
}
UINT ThreadProc2(LPVOID param)
{CSingleLock singelLock(semaphore);
singleLock.Lock();
Sleep(10000);
::MessageBox((HWND)param,"Thread2 had access","Thread2",MB_OK);
return 0;
}
UINT ThreadProc3(LPVOID param)
{CsingleLock singelLock(semaphore);
singleLock.Lock();
Sleep(10000);
::MessageBox((HWND)param,"Thread3 had access","Thread3",MB_OK);
return 0;
}
对复杂的应用程序来说,线程的应用给应用程序提供了高效、快速、安全的数据处理能力。本文讲述了线程中经常遇到的问题,希望对读者朋友有一定的帮助
- Windows多线程多任务设计初步3
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步1
- Windows多线程多任务设计初步2
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步
- 《Windows多线程多任务设计初步》
- Windows多线程多任务设计初步
- Windows多线程多任务设计初步 vczxvc在线
- Windows多线程多任务设计初步 vczxvc在线(转)
- 用VC++5 实 现 多 线 程
- 魔兽世界常用宏收集
- Windows多线程多任务设计初步1
- Windows多线程多任务设计初步2
- SWF No Cache Solution
- Windows多线程多任务设计初步3
- 魔兽世界的快捷键
- Afx全局函数及MFC常见数据类型
- 创建一个纯CSS的水平导航条
- 发现CSS控件的好处
- WIN98下运行DOTNET程序的一些问题
- 救助Blogger王俊
- 保存中文名文件乱码
- linux下面使用gprof,分析多线程