D。任何两个线程ID 都不会相同。
许多Win32 API 函数都以线程ID 作为参数对线程进行cāo作。在调用CreateThread 或者
_begintread 创建线程的时候,会返回线程ID,可以在这个时候将ID 保存下来。调用Win32 API
枫叶文学网www.fywxw.com
第9 章 多线程
·215·
函数GetCurrentThreadID 可以得到当前线程ID。该函数没有参数,它的函数原型如下:
DWORD GetCurrentThreadId(VOID);
用户也可以调用Win32 API 函数GetCurrentThread 得到当前线程的伪句柄,函数原型如
下:
HANDLE GetCurrentThread(VOID);
4.线程的切换
如果希望cāo作系统从当前正在执行的线程切换到其他就绪线程,可以通过调用Win32
API 函数SwitchToThread 实现,切换后的线程由cāo作系统选择。SwitchToThread 函数没有参
数,它的函数原型如下:
BOOL SwitchToThread(VOID);
5.打开线程
Win32 API 函数OpenThread 可以打开一个存在的线程对象。如果调用成功,返回指定线
程的句柄,否则返回NULL。它的函数原型如下:
HANDLE OpenThread(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwThreadId
);
函数中主要参数的意义如下。
? dwDesiredAccess:描述希望对线程进行的访问。
? bInheritHandle:指定返回的句柄是否可以被一个当前进程创建的新进程继承。
? dwThreadId:被访问线程的ID。
6.线程函数ThreadProc
线程函数是一个由用户定义的函数,作为执行线程的入口。在调用创建线程函数的时候,
将ThreadProc 作为参数传入。返回调用成功或失败的标记。它的函数原型如下:
DWORD WINAPI ThreadProc(
LPVOID lpParcomter
);
函数中主要参数的意义如下。
? lpParcomter:传给线程函数的参数。
7.获得线程的时间信息
线程的生命周期中,可以调用GetThreadTcoms 函数得到指定线程的时间信息。如果调用
成功,返回非0 值,否则返回0。GetThreadTcoms 函数原型如下:
BOOL GetThreadTcoms(
HANDLE hThread,
LPFILETIME lpCreationTcom,
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·216·
LPFILETIME lpExitTcom,