簡體   English   中英

將 arguments 傳遞給 pthread_create() 時出錯

[英]Error when passing arguments to pthread_create()

我正在嘗試為pthread創建一個類似線程池的結構,以便為網絡編程執行相同的工作,這與這個問題非常相似。 但是,當我嘗試將init()方法的 arguments 傳遞給pthread_create()時出現問題。

代碼

class ThreadPool{
    public:
        BlockingQueue socket_bq;
        pthread_mutex_t* threads[THREAD_NUM];   // store the pointer of threads

        ThreadPool();
        void init(pthread_attr_t* attr, void*start_routine(void*), void* arg);
};

void ThreadPool::init(pthread_attr_t* attr, void*start_routine(void*), void* arg){
    // create threads
    for(int i = 0; i < THREAD_NUM; i++){
        if(pthread_create(threads[i], attr, start_routine, arg)!=0){
            fprintf(stderr, "Thread Pool Init: falied when creatng threads");
            exit(1);
        }
    }
}

錯誤信息

錯誤:沒有匹配的 function 調用 'pthread_create' if(pthread_create(threads[i], attr, start_routine, arg).=0){ ^~~~~~~~~~~~~~ /Library/Developer/ CommandLineTools/SDKs/MacOSX.sdk/usr/include/pthread:h:329:5:注意:候選 function 不可行,沒有從 'pthread_mutex_t *'(又名 '_opaque_pthread_mutex_t *')到 'pthread_t _Nullable * _Nonnull' 的已知轉換(又名 '_opaque_pthread_t **') 用於第一個參數 int pthread_create(pthread_t _Nullable * _Nonnull __restrict。^ 1 個錯誤生成。

threads的定義可能不正確。 它應該是:

pthread_t* threads[THREAD_NUM];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM