歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++下多線程的創建

C++下多線程的創建

日期:2017/3/1 10:08:10   编辑:Linux編程
在C語言下面,創建多線程不是很復雜,直接調用win32的CreateThread函數就可以了。但是怎麼用C++創建多線程確實是一個問題。一方面,創建線程中的函數指針不能是成員函數,一方面我們希望可以把成員函數當作是線程的入口函數,這中間應該怎麼調和呢?

我想,要想做到這一點可以充分利用C++語言的兩個特性,一個是this指針,一個就是靜態函數。利用this指針可以傳遞入口參數,而靜態函數解決的是入口地址的問題。如果再加上C++的多態特性,那就更加完美了。

下面的代碼是我個人的想法和思路,歡迎多提寶貴意見。

#include <stdio.h>

#include <windows.h>

class data{

public:

data() {}

virtual ~data() {}

virtual void run() { printf(“this is data!\n”);}

static unsigned long __stdcall func(void* param){

((class data*)(param))->run();

return 1;

}

void create_thread(){

CreateThread(NULL, 0, data::func, this, 0, NULL);

}

};

class test: public data{

public:

test() {}

~test() {}

void run() {printf(“this is test!\n”);}

};

int main(int argc, char* argv[])

{

data d, *p;

test t;

p = &d; p->create_thread();

p = &t; p->create_thread();

while(1) Sleep(100);

return 1;

}
Copyright © Linux教程網 All Rights Reserved