C++ pthread_create 線程創建與傳參(struct)

在JNI裏邊想用線程,結果發現C++線程的幾個重要的點,暫時沒找到合適的資料詳細闡述這些知識點。花了點時間終於把線程的創建,參數傳遞搞清楚了,特意記錄下來,希望對別人有幫助。

線程創建完整code

#include <stdio.h>
#include <pthread.h>
//數據傳遞的結構體
struct Param {
    int type;
    char *message;
};

void createThread() {
    //定義傳遞參數的結構體,注意這裏的new操作,這裏非常重要!
    Param *param = new Param();
    param->type = 1024;
    param->message = "thread message";
    //這裏函數指針*threadFunc採用&threadFunc
    //參數void *data使用param指針
    pthread_create(&pt, NULL, &threadFunc, param);
}

//必須是static的靜態函數
static void *threadFunc(void *data) {
    //參數需要做一次強轉
    Param *param = (Param *)data;
    //日誌打印,按照自己的需求處理。。
    print("Thread", "message = %s type = %d",param->message, param->type);
    pthread_exit(0);
    return NULL;
}

C++線程使用的注意點

1.複雜參數的傳遞需要使用結構體
2. 結構體初始化一定要用Param *param = new Param(); 用malloc(..);是不行的!
3. 線程實際執行的函數必須定義爲static void *threadFunc(void *data),除了函數名稱以外別的都必須一致
4. 取參數的時候需要做一次強轉:Param param = (Param )data;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章