多线程,成员函数内创建线程,线程函数调用类内的其他成员函数

一种是传统的,在windows下写的 一种是c11标准的,可以跨平台
#include "stdafx.h"
#include <iostream>
//#include <windows.h>
#include <thread>
using namespace std;

class A
{
public:
	int global_a;
public:
	void printA(){ cout << "hello world!" << endl; }
	void funA();
	void ThreadProc();

};

void A::ThreadProc()
{
	this->printA();
}
void A::funA()
{
	global_a = 0;
	//HANDLE thread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL);
	thread t1(&A::ThreadProc, this);//C++11,创建一个分支线程,回调到myThread函数里
	t1.detach();

}
int _tmain(int argc, _TCHAR* argv[])
{
	A a;
	a.funA();

	system("pause");
	
	return 0;
}



windowsAPI调用的函数

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include <iostream>
//#include <windows.h>
#include <thread>
using namespace std;


class A
{
public:
int global_a;
public:
void printA(){ cout << "hello world!" << endl; }
void funA();
void ThreadProc();


};

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
for (int i = 0; i < 5; ++i)
{
cout << "子线程:i = " << i << endl;
Sleep(100);
}
A * a = (A*)lpParameter;
a->printA();

return 0L;
}
/*
void A::ThreadProc()
{
this->printA();
}

*/
void A::funA()
{
global_a = 0;
HANDLE thread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL);
//thread t1(&A::ThreadProc, this);//创建一个分支线程,回调到myThread函数里
t1.detach();
}
int _tmain(int argc, _TCHAR* argv[])
{
A a;
a.funA();


system("pause");

return 0;
}


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值