HANDLE CreateThread( LPSECURITY_ATTRIBUTES psa, DWORD cbStackSize, LPTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam, DWORD dwCreationFlags, PDWORD pdwThreadID);
pfnStartAddr参数指定希望新线程执行的线程函数的地址。线程函数的pvParam参数与最初给CreateThread函数的pvParam参数是一样的,CreateThread不用这个参数做别的事情,只是在线程开始执行时候将其传给线程函数。通过这个参数,可以将一个初始值传给线程函数,这个初始值可以是一个数值,也可以是指向一个数据结构(其中包含额外的信息)的指针。
例如:
struct ThreadInfo { int serial; //the serial number of the thread char entity; //type of thread(reader or writer) double delay; //delay of thread double persist; //time of thread's read and write operation }; void WP_ReaderThread(void *p); CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(WP_ReaderThread), &thread_info[i], 0, &thread_ID);
HANDLE GetCurrentThread();
返回线程内核对象的一个伪句柄(pseudohandle),不会影响线程内核对象的使用计数。如果调用CloseHandle,将一个伪句柄作为参数传入,CloseHandle只是简单地忽略此调用,并返回FALSE,在这种情况下,GetLastError将返回ERROR_INVALID_HANDLE。
使用DuplicateHandle函数可以将伪句柄转换为一个真正的句柄