C/C++中创建线程 -2013-09-20 12:46
来源:互联网 发布:自然哲理 知乎 编辑:程序博客网 时间:2024/06/05 10:30
创建线程的方法:
HANDLE hThread= CreateThread(NULL,0,SendThread,(LPVOID)i,0,&dwThread);
if( hThread == NULL )
{
printf("\tCreateThread Failed.\n");
exit(0);
}
else
{
printf("\tCreateThread %d succeed.\n",i);
}
CloseHandle(hThread);
...
DWORD WINAPI SendThread(LPVOID lpParam)
{
...
}
其中 SendThread时线程创建好后所执行的函数。
CloseHandle(hThread)将句柄关闭,但并没有将线程关闭:
HANDLE hThread= CreateThread(NULL,0,SendThread,(LPVOID)i,0,&dwThread);
if( hThread == NULL )
{
printf("\tCreateThread Failed.\n");
exit(0);
}
else
{
printf("\tCreateThread %d succeed.\n",i);
}
CloseHandle(hThread);
...
DWORD WINAPI SendThread(LPVOID lpParam)
{
...
}
其中 SendThread时线程创建好后所执行的函数。
CloseHandle(hThread)将句柄关闭,但并没有将线程关闭:
1,线程和线程句柄(Handle)不是一个东西,线程是在cpu上运行的.....(说不清楚了),线程句柄是一个内核对象。我们可以通过句柄来操作线程,但是线程的生命周期和线程句柄的生命周期不一样的。线程的生命周期就是线程函数从开始执行到return,线程句柄的生命周期是从CreateThread返回到你CloseHandle()。
2,所有的内核对象(包括线程Handle)都是系统资源,用了要还的,也就是说用完后一定要closehandle关闭之,如果不这么做,你系统的句柄资源很快就用光了。
3,如果你CreateThread以后需要对这个线程做一些操作,比如改变优先级,被其他线程等待,强制TermateThread等,就要保存这个句柄,使用完了在CloseHandle。如果你开了一个线程,而不需要对它进行如何干预,CreateThread后直接CloseHandle就行了。
所以
CloseHandel(ThreadHandle );
只是关闭了一个线程句柄对象,表示我不再使用该句柄,即不对这个句柄对应的线程做任何干预了。并没有结束线程。
转自我的搜狐博客: http://jluhlh.blog.sohu.com/277526065.html
0 0
- C/C++中创建线程 -2013-09-20 12:46
- C 线程的创建
- C++:创建线程初试
- C语言如何创建线程(windows)系统中
- 【C#】进程中最大线程创建数量分析
- c语言中如何创建新的线程
- C 语言创建线程池
- windows下c创建线程
- C 语言创建线程池
- C/C++ 创建线程解析
- 【C语言】【unix c】线程的创建
- VS2003 C#:重写键盘响应事件、动态创建控件、创建线程、在线程中使用委托在界面显示数据
- 用C创建新线程的源码
- C创建新线程的源码
- 线程池原理及创建(c++)
- C语言创建线程-简单例程
- Linux C线程的创建和使用
- Android NDK c创建新的线程
- GC 收集器算法总结
- wifi共享开启关闭代码
- Secret Number
- 第四十一讲 深入线程(操作线程的,执行,挂起,恢复,关闭 及 Join的用法)
- CyanogenMod 7
- C/C++中创建线程 -2013-09-20 12:46
- js生成日历
- 传球游戏 动态规划
- Python解析XML文档
- csdn外链工具,QQ1922028080自动收录,自动删除群发必备,召
- zigbee组网原理
- 黑马程序员_日期(二)——Calendar
- poj 1321棋盘问题
- Calculate S(n)