歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++下多線程的創建

    在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