您的位置:首页 > 其它

用_beginthreadex创建线程

2014-07-31 22:23 246 查看
//Note:尽量用_beginthreadex而不要用CreatThread
//用_beginthreadex和_endthreadex编写多线程程序
#include<iostream>
#include<Windows.h>
#include<process.h>
using namespace std;
unsigned num;
unsigned __stdcall thread2(void* pArguments){//线程函数
cout<<(char*)pArguments<<endl;

cout << "Running thread2" << endl;
for (int i = 0; i < 1000; ++i)
num++;
_endthreadex(0);
return 0;
}
int main(){
cout << "Running main thread" << endl;
cout << "Now creat a new thread2" << endl;
char str[] = "dave call thread2";
HANDLE hThread;
hThread = (HANDLE)_beginthreadex(NULL, 0, thread2, str, 0, NULL);//创建线程
/*
uintptr_t _beginthreadex( // NATIVE CODE
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
*/
WaitForSingleObject(hThread, INFINITE);//等待thread2退出,如果不等待 num在输出前可能还没增加到1000
CloseHandle(hThread);
cout << "num has changed "<<num << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: