VC 线程同步实例
来源:互联网 发布:网络兼职写小说 编辑:程序博客网 时间:2024/05/20 06:36
1.MFC为临界区提供有一个CCriticalSection类,使用该类进行线程同步处理是非常简单的,只需在线程函数中使用CCriticalSection类成员函数Lock()和UnLock()标定出被保护代码片段即可。使用CCriticalSection类实现同步代码如下:
//MFC临界区类对象
CCriticalSection g_clsCriticalSection;
//共享资源
char g_cArray[10];
UINT ThreadProc20(LPVOID pParam)
{
//进入临界区
g_clsCriticalSection.Lock();
//对共享资源进行写入操作
for(int i=0; i<10;i++)
{
g_cArray[i] = 'a';
Sleep(1);
}
//离开临界区
g_clsCriticalSection.Unlock();
return 0;
}
UINT ThreadProc21(LPVOID pParam)
{
//进入临界区
g_clsCriticalSection.Lock();
//对共享资源进行写入操作
for(int i=0; i<10;i++)
{
g_cArray[10-i-1] = 'b';
Sleep(1);
}
//离开临界区
g_clsCriticalSection.Unlock();
return 0;
}
//创建线程调用
void CSample08View::OnCriticalSectionMFC()
{
//启动线程
AfxBeginThread(ThreadProc20,NULL);
AfxBeginThread(ThreadProc21,NULL);
//等待继续按完毕
Sleep(300);
//报告计算结果
CString sResult = CString(g_cArray);
AfxMessageBox(sResult);
}
2.使用事件内核对象来实现线程同步 CreateEvent
//事件句柄
HANDLE hEvent = NULL;
//共享资源
char g_cArray[10];
UINT ThreadProc20(LPVOID pParam)
{
//等待事件置位
WaitForSingleObject(hEvent,INFINITE);
//对共享资源进行写入操作
for(int i=0; i<10;i++)
{
g_cArray[i] = 'a';
Sleep(1);
}
//处理完成后即将事件对象置位
SetEvent(hEvent);
return 0;
}
- VC 线程同步实例
- VC线程同步方法
- vc++ 线程同步技术
- VC线程同步方法
- VC++ 线程同步 CRITICAL_SECTION
- VC++线程的同步
- vc线程同步
- VC++线程同步
- VC++线程的同步
- 线程同步实例
- 线程同步实例
- java 线程同步实例
- java线程同步实例
- 线程同步问题实例
- Java线程同步实例
- VC——线程同步
- VC——线程同步
- VC线程同步技术剖析
- 设计模式2—Proxy设计模式
- 用“删除重复项”提取出现值
- ios数组基本用法和排序
- Codeforces 56D Changing a String 编辑距离 记忆化dp
- 数字电路设计之写verilog易犯的错误
- VC 线程同步实例
- (队列)queue
- hdu 1130 How Many Trees
- prepareStatement与Statement的区别
- 杭电 1069 Monkey and Banana
- 配置域名映射
- Java内部类解析及其运用
- hdu2042 不容易系列之二
- 职场大牛精彩总结:职场上,如何做人做事做管理【转】(文/张子阳)