windows 创建子线程

微软在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

你可能感兴趣的:(windows 创建子线程)