线程同步
来源:互联网 发布:sql语句查询例子 编辑:程序博客网 时间:2024/06/05 09:14
创建线程:
DWORD param; LPDWORD dwThreadID; //线程ID //创建线程 HANDLE hThread = CreateThread( NULL, //安全设置,一般设为NULL 0, //新线程的初始堆栈大小,默认0 (LPTHREAD_START_ROUTINE)ThreadFunction, //指向线程函数 ¶m, //传递给ThreadProc的参数,这样主线程和从属线程就可以共享数据。 0, //启动选项,一般为0 &dwThreadID); //存储线程ID if(hThread == INVALID_HANDLE_VALUE) { MessageBox("线程创建失败!", "提示", 64); return; }
#include "stdio.h"#include "Windows.h"int g_Num_One = 0;CRITICAL_SECTION g_cs;DWORD WINAPI ThreadProc(LPVOID lpParam){ int nTmp = 0; for(int i=0; i<10; i++) { EnterCriticalSection(&g_cs); //进入临界区 nTmp = g_Num_One; nTmp++; Sleep(1); g_Num_One = nTmp; LeaveCriticalSection(&g_cs); //离开临界区 } return 0;}int main(){ InitializeCriticalSection(&g_cs); //初始化临界区对象 HANDLE hThread[10] = {0}; for(int i=0; i<10; i++) { hThread[i] = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL); if(hThread[i] == NULL) printf("%d CreateThread Error \n", i); } WaitForMultipleObjects(10, hThread, TRUE, INFINITE); //等待多个线程 printf("%d\n", g_Num_One); for(i=0; i<10; i++) CloseHandle(hThread[i]); DeleteCriticalSection(&g_cs); //删除临界区对象 return 0;}
0 0
- 线程同步--线程同步--线程同步--线程同步--线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 装饰者模式对HttpServletRequest进行增强
- DAPM之二:audio paths与dapm kcontrol
- Qtcreator中常用快捷键总结
- msm8610耳机检测相关
- Cocoapods的安装与使用
- 线程同步
- androidStudio 导入的库的位置
- JQGrid显示TimeStamp时间格式
- HTML5:元素的属性
- 浅谈线程池(上):线程池的作用及CLR线程池
- 测试截图
- 理解 HTTPS 的工作原理
- js delete 用法(删除对象属性及变量)
- response.setHeader参数、用法的介绍