微软在Windows API中提供了建立新的线程的函数CreateThread,函数的原型定义如下:
HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程安全属性 DWORD dwStackSize, //堆栈大小 LPTHREAD_START_ROUTINE lpStartAddress, //函数地址 LPVOID lpParameter, //函数参数 DWORD dwCreationFlags, //创建标识 LPDWORD lpThreadId //新线程的ID );
下面写一个示例程序来看看怎么创建和控制一个新线程。
#include<iostream> #include<Windows.h> using namespace std; //线程一,内部关闭自己 DWORD WINAPI ThreadOne(LPVOID lpParameter){ int i = 0; for(i = 0;i < 10; i ++){ cout << "thread one is running " << (char *)lpParameter << endl; if(i == 5){ //关闭线程自己 ExitThread(300); } } return 0; } DWORD WINAPI ThreadTwo(LPVOID lpParameter){ int i = 0; for(i = 0;i < 100; i ++){ cout << "thread two is running " << (char *)lpParameter << endl; Sleep(100); } return 0; } int main() { HANDLE thread1,thread2; thread1 = CreateThread( NULL, 0, ThreadOne, "testone", 0, NULL ); thread2 = CreateThread( NULL, 0, ThreadTwo, "testtwo", 0, NULL ); int i = 0; for(i = 0;i < 10; i ++){ cout << "main thread is running " << endl; Sleep(100); } //主线程关闭子线程 TerminateThread(thread2,300); Sleep(3000); return 0; }其中线程一是自行关闭,线程二是主线程强行关闭,代码还是比较清晰易懂的,右边这个链接有多线程编程的一些函数介绍: http://blog.csdn.net/bxhj3014/article/details/2082259