学习多线程

//例1
#include <iostream>
#include<windows.h>
using namespace std;
DWORD WINAPI ThreadProc(LPVOID lpParameter);

int main(){
	
	HANDLE thread=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);

	CloseHandle(thread);

	for(int i=0;i<5;i++){
		cout<<"主线程: i="<<i<<endl;  //没有进行线程同步处理,时间片可能提前用完,导致输出换行出错
		Sleep(1000);	
	}

	return 0;
}

DWORD WINAPI ThreadProc(LPVOID lpParameter){
	for(int j=0;j<5;j++){
		cout<<"子线程:j="<<j<<endl;
		Sleep(2000);
	}
	return 0L;
}


//例2

#include <iostream>
#include<windows.h>
using namespace std;

#define NAME_LINE 40

DWORD WINAPI ThreadProc(LPVOID lpParameter);

typedef struct __THREAD_DATA{
	int nMaxNum;
	char strThreadName[NAME_LINE];

	__THREAD_DATA():nMaxNum(0){
		memset(strThreadName,0,NAME_LINE * sizeof(char));
	
	}

}THREAD_DATA;

void main(){
	THREAD_DATA threadData1,threadData2;
	threadData1.nMaxNum=5;
	strcpy(threadData1.strThreadName,"线程1");

	threadData2.nMaxNum=10;
	strcpy(threadData2.strThreadName,"线程2");


	//创建第一个子线程
	HANDLE hThread1=CreateThread(NULL,0,ThreadProc,&threadData1,0,NULL);
	
	HANDLE hThread2=CreateThread(NULL,0,ThreadProc,&threadData2,0,NULL);

	//关闭线程   因为线程创建后立即执行了
	CloseHandle(hThread1);
	CloseHandle(hThread2);

	//主线程的执行路径
	for(int i=0;i<5;i++){
		cout<<"主线程===  "<<i<<endl;
		Sleep(1000);
	}
	system("pause");
	
	


}

DWORD WINAPI ThreadProc(LPVOID lpParameter){
	THREAD_DATA *pThreadData=(THREAD_DATA *)lpParameter;

		for(int i=0;i<pThreadData->nMaxNum;i++){
			cout<<pThreadData->strThreadName<<"-------"<<i<<endl;
			Sleep(1000);
		}
		return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值