线程、线程句柄、线程ID
来源:互联网 发布:数据机房设计 编辑:程序博客网 时间:2024/05/01 04:08
线程与线程句柄的关系:
线程句柄与线程ID的区别:
CreateThread() API 用于创建线程。 API 返回同时线程句柄和线程标识符 (ID)。线程句柄有完全访问权创建线程对象。 运行线程时线程 ID 唯一标识线程在系统级别。
●ID是在Windows系统范围内唯一标示Thread的。
●Handle是用来操作Thread的,可以有多个,每个HANDLE可以有不同的操作权限,在不同进程OpenThread得到的值不一样。
●线程的ID是系统全局的,其HANDLE是进程局部的.
●此ID只在线程的生存期内有效。
●HANDLE是os和client之间用来操作进程和线程一个桥梁,os有一张维护HANDLE的表单,里面大概放置了
●ID是CreateThread时操作系统自动生成的。
●线程的句柄和id是不同的。
线程终止运行时发生的操作
当线程终止运行时,会发生下列操作:
• 线程拥有的所有用户对象均被释放。在 Windows 中,大多数对象是由包含创建这些对象的线程的进程拥有的。但是一个线程拥有两个用户对象,即窗口和挂钩。当线程终止运行时,系统会自动撤消任何窗口,并且卸载线程创建的或安装的任何挂钩。其他对象只有在拥有线程的进程终止运行时才被撤消。
• 线程的退出代码从 STILL_ACTIVE 改为传递给 ExitThread 或 TerminateThread 的代码。
• 线程内核对象的状态变为已通知。
• 如果线程是进程中最后一个活动线程,系统也将进程视为已经终止运行。
• 线程内核对象的使用计数递减 1。
当一个线程终止运行时,在与它相关联的线程内核对象的所有未结束的引用关闭之前,该内核对象不会自动被释放。
一旦线程不再运行,系统中就没有别的线程能够处理该线程的句柄。然而别的线程可以调用 GetExitcodeThread 来检查由 hThread 标识的线程是否已经终止运行。如果它已经终止运行,则确定它的退出代码:
BOOL GetExitCodeThread(HANDLE hThread, PDOWRD pdwExitCode);
退出代码的值在 pdwExitCode 指向的 DWORD 中返回。如果调用 GetExitCodeThread 时线程尚未终止运行,该函数就用 STILL_ACTIVE 标识符(定义为 0x103)填入 DWORD。如果该函数运行成功,便返回 TRUE。
线程、线程句柄、线程ID的生成和消失
hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0,& dwId);
//至此,新线程,线程句柄,线程ID产生
TerminateThread(hThread, 0);
//至此,线程ID,线程句柄都依然存在
WaitForSingleObject(hThread, INFINITE);
//至此,线程本身和线程ID消失
CloseHandle(hThread);
//至此,线程句柄消失
线程、线程句柄、线程ID
- 线程、线程句柄、线程ID
- 线程、线程句柄、线程ID
- 线程、线程句柄、线程ID
- 线程、线程句柄、线程id
- 线程、线程句柄、线程ID
- 线程、线程句柄、线程ID
- 线程、线程句柄、线程ID的关系
- 线程、线程句柄、线程ID的关系
- 窗口句柄,进程ID,进程句柄,线程ID,线程句柄
- 窗口句柄,进程ID,进程句柄,线程ID,线程句柄
- 线程ID 与 线程句柄 区别
- 线程ID 与 线程句柄 区别
- 线程ID 与 线程句柄 区别
- 线程句柄和线程ID的区别
- 线程ID与线程句柄的关系
- 线程ID 与 线程句柄 区别 (转载)
- 进线程, 进线程句柄, 进线程ID, 句柄与ID间转换, 伪句柄, 伪句柄转为句柄
- 进线程, 进线程句柄, 进线程ID, 句柄与ID间转换, 伪句柄, 伪句柄转为句柄
- linux常用命令之关机重启命令
- netty5 LengthFieldBasedFrameDecoder实例(解决半包)
- HTML+CSS基础课程(三)
- 2015最流行的Android组件、工具、框架大全
- 超好的Git学习网站
- 线程、线程句柄、线程ID
- android框架StringUtils工具类
- A - Red and Black POJ 1979
- Java关键字--final
- PAT1084
- 关于友谊
- 今天开始重新更新(ps:广接各种php相关的外包项目,有意者请留言或者私聊)
- 文章标题
- fragment的使用以及fragment大家族解析