多线程应用——(四)
2015-08-06 12:14
288 查看
前言:1.多线程在访问同一个变量或同一块区域时要使用临界区
2.临界区内最多线程数目是64
3.windows 下,CreateThread(WinAPI函数)与临界区相关的函数匹配使用
4._beginthread函数是CRT(C Running Time)相关函数
2.临界区内最多线程数目是64
3.windows 下,CreateThread(WinAPI函数)与临界区相关的函数匹配使用
4._beginthread函数是CRT(C Running Time)相关函数
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<Windows.h> #include<process.h> #include <time.h> #define THREAD_NUM 64 //临界区线程数最大是64
int num = 0; CRITICAL_SECTION cs; //定义临界区,结构体变量 DWORD WINAPI test(void * p) { EnterCriticalSection(&cs); for (int i = 0; i < 100; i++) { num++; } LeaveCriticalSection(&cs); return 0; } void main() { InitializeCriticalSection(&cs);//初始化临界区 HANDLE hd[THREAD_NUM]; for (int i = 0; i < THREAD_NUM; i++) { hd[i] = CreateThread(NULL, 0, test, NULL, 0, NULL); //WaitForSingleObject(hd[i], INFINITE);//解决多线程对全局变量的访问冲突问题,方法一:使用同步技术,缺点是单个线程的执行时间不宜太长 } WaitForMultipleObjects(THREAD_NUM, hd, TRUE, INFINITE); printf("%d\n", num); DeleteCriticalSection(&cs); getchar(); }
相关文章推荐
- Python程序的执行过程
- git gui提交无法获知你的身份
- 模仿百度图片首页图片分类特效
- 安卓GM渠道下载链接
- Notify和NotifyAll的区别?
- iosTest
- MathType使用细节及日常使用中遇到问题的解决
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- 我当程序猿的那些年遇到过的囧事
- iOS imageName方法获取Folder文件夹(蓝色文件夹)内图片
- vc递归删除文件夹
- js 常用方法
- Git Gui基本使用情况
- 2388 Who's in the Middle(简单排序)
- Dubbo java.io.IOException: Can not lock the registry cache file
- python学习——初次接触(python,wxpython,Boa,py2exe)
- iOS开发无第三方控件的援助达到的效果侧边栏
- Win10 64位正式版系统安装方法全过程图解(U大师)
- Jquery+Ajax+Json+存储过程实现高效分页
- WPF中使用MFC动态链接库(dll)函数