一个线程简单地被表示为可能呼叫程序中其它函数的函数。程序从其主线程开始执行,这个主执行绪是在传统的C程序中叫做main的函数,而在Windows中是WinMain。一旦执行起来,程序可以通过在系统呼叫CreateThread中指定初始线程函数的名称来建立新的线程的执行。操作系统在执行绪之间优先权式地切换控件,和它在程序之间切换控制权的方法非常类似。
多线程,使程序得以将其工作分开,独立运作,互不影响。
那么如何创建一个线程呢?
代码如下:
//最简单的创建多线程实例 #include <stdio.h> #include <windows.h> //子线程函数 DWORD WINAPI ThreadFun(LPVOID pM) { printf("子线程的线程ID号为:%d\n子线程输出Hello World\n", GetCurrentThreadId()); printf("然后开始休眠 \n"); Sleep(5000); printf("线程唤醒 \n"); return 0; } DWORD WINAPI ThreadConsumer(LPVOID pM) { printf("创建了一个消费者子线程,线程代号: %d \n", GetCurrentThreadId()); return 0; } DWORD WINAPI ThreadProductor(LPVOID pM) { printf("创建了一个生产者子线程,线程代号: %d \n", GetCurrentThreadId()); return 0; } //主函数,所谓主函数其实就是主线程执行的函数。 int main() { HANDLE handleThreadFun = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL); HANDLE handle = CreateThread(NULL, 0, ThreadProductor,NULL,0,NULL); printf("Wait handleThreadFun start \n"); WaitForSingleObject(handleThreadFun, INFINITE); printf("Wait handleThreadFun end \n"); getchar(); return 0; }
执行效果如下: