Chyba při předávání argumenty pthread_create()

0

Otázka

Snažím se vytvořit Thread-Pool-jako struktura pro pthreads dělat stejné práce pro síťové programování, které je velmi podobné na tuto otázku. Nicméně, problém nastal, když jsem se snažil předat argumenty init() metoda pthread_create().

Kód

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);
        }
    }
}

Chybové zprávy

error: no matching function for call to 'pthread_create'
        if(pthread_create(threads[i], attr, start_routine, arg)!=0){
           ^~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/pthread.h:329:5: note: candidate function not viable: no known conversion from 'pthread_mutex_t *' (aka '_opaque_pthread_mutex_t *') to 'pthread_t  _Nullable * _Nonnull' (aka '_opaque_pthread_t **') for 1st argument
int pthread_create(pthread_t _Nullable * _Nonnull __restrict,
    ^
1 error generated.
arguments c++ macos pthreads
2021-11-23 11:10:08
1

Nejlepší odpověď

2

Definice threads je nesprávné. To by mělo být:

pthread_t* threads[THREAD_NUM];
2021-11-23 20:16:38

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................