产生一个新线程,是以CreateThread开始的。
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
DWORD dwStackSize, // initial thread stack size
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to receive thread ID
);
lpThreadAttributes 描述施行于这一新线程的security属性。NULL表示使用缺省值。
dwStackSize 新线程拥有自己的堆栈。0表示使用缺省大小:1MB。
lpStartAddress 新线程将开始的起始地址。这是一个函数指针。在C语言中函数名称即代表函数指针,所以这里可放一个函数名称。
lpParameter 此值将被传送到上述所指定的新线程函数中,作为参数。
dwCreationFlags 允许你产生一个暂时挂起的线程。默认是“立即开始执行”。
lpThreadId 新线程ID会被传回到这里。
线程开始允许的函数的返回值为DWORD,调用约定是WINAPI(即__stdcall),有一个LPVOID参数。
线程的执行次序无法保证。
Task Switches可能在任何时刻任何地点发生。(用多线程版本的函数库可以解决某些问题)
线程对于小的改变有高度的敏感。
线程并不总是立刻启动。