多线程 学习笔记<1> 线程建立
来源:互联网 发布:五笔拆字软件 编辑:程序博客网 时间:2024/06/08 09:32
先看下面一个例子
//Tread.cpp#include <iostream>#include <cstdlib>using namespace std;#include <Windows.h>#include <process.h>unsigned _stdcall ThreadProc1(void* param);unsigned _stdcall ThreadProc2(void* param);int main(){ HANDLE handle1 = (HANDLE)_beginthreadex(NULL, 0, ThreadProc1, NULL, NULL, NULL); HANDLE handle2 = (HANDLE)_beginthreadex(NULL, 0, ThreadProc2, NULL, NULL, NULL); if ((handle1 == NULL) | (handle2 == NULL)) { cout<<"create thread failed"<<endl; system("pause"); return 0; } WaitForSingleObject(handle1, INFINITE); cout<<"Thread1 is over"<<endl; WaitForSingleObject(handle2, INFINITE); cout<<"Thread2 is over"<<endl; CloseHandle(handle1); CloseHandle(handle2); system("pause"); return 0;}unsigned _stdcall ThreadProc1(void* param){for(int i=0; i<3; i++){ cout<<"_beginthreadex create thread___1"<<endl; Beep(1000,500);} return 0;}unsigned _stdcall ThreadProc2(void* param){for(int i=0; i<6; i++){ cout<<"_beginthreadex create thread___2"<<endl; Beep(1000,500);} return 0;}
_beginthreadx 参数依次为
安全属性,默认为NULL
线程堆栈大小,默认为0,表示同父线程
线程函数名,线程任务
线程参数,此处为NULL,若有参数建议结构体传递
线程标志,0(NULL)或者CREATE_SUSPEND 立即执行或者创建后挂起
线程ID,不用的话可以为NULL
下面是另一个传递参数的线程例子。
对比可以发现一些现成的书写特点。
Thread.cpp#include <Windows.h>#include <process.h>#include <iostream>#include <cstdlib>using namespace std;struct ThreadInfo{int param;};unsigned _stdcall ThreadProc(void* param){ThreadInfo * Info = (ThreadInfo*)param;int count = Info->param;for(int i=0; i<count; i++){ cout<<"_beginthreadex create thread"<<endl; cout<<"The Thread ID is"<<GetCurrentThreadId()<<endl; Beep(1000,500);} return 0;}int main(){ HANDLE handle; DWORD ThreadID; unsigned param = 5; handle = (HANDLE)_beginthreadex(NULL, 0, &ThreadProc, (LPVOID)¶m, 0, (unsigned *)&ThreadID); if (handle == NULL) { cout<<"create thread failed"<<endl; system("pause"); return 0; } WaitForSingleObject(handle, INFINITE); cout<<"Thread is over"<<endl; CloseHandle(handle); system("pause"); return 0;}
额,这个还是没用到线程 ID。但是得到了。
0 0
- 多线程 学习笔记<1> 线程建立
- JAVA多线程学习笔记<1>什么是线程
- 多线程学习笔记 线程基础
- 多线程学习笔记3-线程间的通信(1)
- 多线程学习笔记1-概念、创建、互斥锁、线程间通信
- linux多线程学习笔记五--线程安全
- Java多线程学习笔记—线程停止
- java 多线程学习笔记之 线程中断
- java 多线程学习笔记之 线程同步
- JAVA多线程学习笔记<3> 停止线程
- 线程池---多线程学习笔记(三)
- 多线程学习笔记---->如何创建一个线程
- 多线程学习笔记---->如何创建一个线程
- 多线程学习笔记3:线程同步
- Java 多线程 学习笔记 线程的停止
- 多线程学习1-创建线程
- java 多线程学习笔记之 线程实现(线程阻塞)
- java 多线程学习笔记4-线程组 线程池 适配器
- va_list的用法
- Linux学习笔记(六)挂载使用文件系统
- asp.net总结(一)
- hdu 1085母函数的应用
- 【BZOJ】【P1337】【最小圆覆盖】【题解】【随机增量法】
- 多线程 学习笔记<1> 线程建立
- Android中图表AChartEngine学习使用与例子
- Linux 命令大全
- python 基础教程之字符串字典
- gsagf
- Deleted Index Entries
- 笔记本电脑使用的11个酷炫技巧
- CentOS下Qt安装
- 设计模式之深入了解