关于线程句柄的问题, 请大家帮忙解释一下.

021850524 2006-11-10 01:47:48
摘自<<Windows核心编程>>, 第六章.
这段叙述没有看明白, 还要烦劳诸位帮忙解释一下:

将伪句柄转换为实句柄

有时可能需要获得线程的实句柄而不是它的伪句柄. 所谓"实句柄", 我是指用来明确标识一个独一无二的线程的句柄. 请看下面的代码:

DWORD WINAPI ParentThread(PVOID pvParam) {
HANDLE hThreadParent = GetCurrentThread();
CreateThread(NULL, 0, ChildThread, (PVOID)hThreadParent, 0, NULL);
// Function continues...
}

DWORD WINAPI ChildThread(PVOID pvParam) {
HANDLE hThreadParent = (HANDLE)pvParam;
FILETIME ftCreationTime, ftExitTime, ftKernelTime, ftUserTime;
GetThreadTimes(hThreadParent, &ftCreationTime, &ftExitTime, &ftKernelTime, &ftUserTime);
// Funcion continues...
}

你能发现这个代码段存在的问题吗? 这个代码的目的是让父线程给子线程传递一个线程句柄, 以标识父线程. 但是, 父线程传递了一个伪句柄, 而不是一个实句柄. 当子线程开始运行时, 它将一个伪句柄传递给GetThreadTime函数, 使自线程得到它自己的CPU时间, 而不是父线程的CPU时间. 出现这种情况的原因是线程的伪句柄是当前线程的句柄, 也就是说, 它是调用函数的线程的句柄.
...全文
220 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pepemimi 2007-01-08
  • 打赏
  • 举报
回复
不懂。

15,471

社区成员

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

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