C++ 线程操作
包含的头文件
#include <Windows.h> //CreateThread的头文件
#include <process.h> //_beginthreadex的头文件
单线程
线程的函数
DWORD WINAPI ThreadFunc01(LPVOID pM) { while (1) { cout << "子线程的ID为 : " << GetCurrentThreadId() << endl; Sleep(500); } return 0; }
主函数
HANDLE hThread; hThread = CreateThread(NULL, 0, ThreadFunc01, NULL, 0, NULL); WaitForSingleObject( hThread, INFINITE );
多线程
线程的函数和上面的相同
主函数
HANDLE hThread[10]; for (int i = 0; i < 10; i++) { h[i] = CreateThread(NULL, 0, ThreadFunc01, NULL, 0, NULL); } WaitForMultipleObjects( 10, h, TRUE, INFINITE );
注:上述的多线程中输出的顺序并不确定。
_beginthreadex
线程的函数
unsigned int __stdcall ThreadFunc00(PVOID pM) { static int num = 0; cout << "子线程的ID为 : " << GetCurrentThreadId() << ", num : " << num++ << endl; return 0; }
主函数
HANDLE h[10]; for (int j = 0; j < 10; j++) { h[j] = (HANDLE)_beginthreadex(NULL, 0, ThreadFunc00, NULL, 0, NULL); } WaitForMultipleObjects( 10, h, TRUE, INFINITE );