您的位置:首页 > 其它

把类成员函数封装成线程API所需要的函数

2014-09-10 10:13 246 查看
template<class _Ty>

void (*mem_fun_thread_t(void (_Ty::* mem_fun)()))(void*){

union{

void (*_start_address)(void*);

void (_Ty::* _mem_fun)();

}thread_func;

thread_func._mem_fun = mem_fun;

return thread_func._start_address;

}

#include "stdafx.h"

#include <string>

#include <iostream>

#include <conio.h>

#include <process.h>

using namespace std;

class Hello

{

public:

Hello(const std::string& name):m_name(name){

}

~Hello(){

}

void run(){

cout << "Hello " << m_name << endl;

}

private:

std::string m_name;

};

template<class _Ty>

void (*mem_fun_thread_t(void (_Ty::* mem_fun)()))(void*){

union{

void (*_start_address)(void*);

void (_Ty::* _mem_fun)();

}thread_func;

thread_func._mem_fun = mem_fun;

return thread_func._start_address;

}

int _tmain(int argc, _TCHAR* argv[])

{

Hello hello("world");

_beginthread(mem_fun_thread_t(&Hello::run), 0, &hello);

_getch();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: