CreateThread 线程执行完后, 是什么状态 , 没有ExitThread

小二码农 2008-07-22 01:36:03
在VC中
hThread = CreateThread( NULL , 0 , (LPTHREAD_START_ROUTINE) MyThreadFouc , &gvar , 0 , &ThreadId );

CreateThread 之后,线程开始执行 , MyThreadFouc 函数执行完后, 线程是什么状态 , 终止还是继续在运行
如果没有终止了, 如何再让线程继续运行这个函数

加个条件语句 while for 这样的方法让函数继续运行就不要说了,我想知道如何让线程再继续运行下去
...全文
575 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingork 2008-12-21
  • 打赏
  • 举报
回复
注意这两个概念,,,进程是分配资源的最小单位,,,

线程不分配资源的,一个进程可以有一个或多个线程,,,线程用到的资源就是所属的进程资源。
gaoteng1984 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangzhonglin 的回复:]
引用 1 楼 unsigned 的回复:
也就是说 线程已经终止了, 但线程的资源没有释放 , 必须等  ExitThread才会释放
[/Quote]
子线程从其入口函数return之后,会进入C运行时库的代码里,进行一些释放资源的操作,然后自动调用ExitThread进行退出,在ExitThread函数里面也会进行一些释放操作,但不会完全释放干净。
主线程CreateThread会返回1个句柄,通过这个句柄可以调GetExitCodeThread来查看已终止的线程的退出码。此时虽然线程已经终止,但仍有一小部分资源没被释放(例如返回码所占的内存),当主线程调用CloseHandle关闭这个句柄后,子线程的全部资源才能得到完全释放。

thirddata 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangzhonglin 的回复:]
引用 1 楼 unsigned 的回复:
線程終止。如果相關的句柄還沒有被關鍵,其句柄等部分資源仍然保留在系統當中。

也就是说 线程已经终止了, 但线程的资源没有释放 , 必须等 ExitThread才会释放
[/Quote]
谬误:
第一,线程函数结束,线程即停止运行
第二,线程函数结束后,本身句柄(线程句柄)引用数减一,等到减到0,操作系统会自己释放,不需要调用ExitThread
第三,线程函数结束,想在运行,只有一个办法,重新Create

小二码农 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 unsigned 的回复:]
線程終止。如果相關的句柄還沒有被關鍵,其句柄等部分資源仍然保留在系統當中。
[/Quote]
也就是说 线程已经终止了, 但线程的资源没有释放 , 必须等 ExitThread才会释放
liumeiqinyang 2008-07-22
  • 打赏
  • 举报
回复
线程函数只要返回,线程就结束了吧。
线程也只是完成一定的功能而已,完成了自然就该结束掉。
对于重复性的工作,那就循环了
僵哥 2008-07-22
  • 打赏
  • 举报
回复
線程終止。如果相關的句柄還沒有被關鍵,其句柄等部分資源仍然保留在系統當中。

15,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧