Используя pthread в C++

Я использую pthread.h в a *.cc файл. когда я пытаюсь использовать pthread_exit(0); или pthread_join(mythrds[yy],NULL); это говорит:

.cc:(.text+0x3e): undefined reference to `pthread_exit'

при соответствии очень похожий код в a *.c файл с gcc это работает прекрасное. Как я могу использовать pthread's в C++.. (Я также добавил-lpthread),

..
void *myThreads ( void *ptr )
{
...
pthread_exit(0); 
}
..

флаги:

g++ -lpthread -Wall -static -W -O9 -funroll-all-loops -finline -ffast-math
14
задан jww 3 October 2017 в 18:30
поделиться

2 ответа

Вы можете попробовать использовать параметр -pthread для g ++.

   -pthread
       Adds support for multithreading with the pthreads library.  This
       option sets flags for both the preprocessor and linker.
29
ответ дан 1 December 2019 в 09:01
поделиться

Имеются ли в ваших файлах заголовков pthread extern "C" {...} вокруг прототипов функций? Это обычный случай, когда компоновщик не может ссылаться на C ++.

Это происходит потому, что C ++ обычно изменяет имена, чтобы можно было кодировать детали параметров в символы (допуская полиморфизм). Например, функции:

void x(int);
void x(void);
void x(char,int,float,double);

получают разные символы компоновщика.

Если файлы заголовков не имеют extern «C» {...} , вам, возможно, придется сделать это самостоятельно:

extern "C" {
    #include <pthread.h>
}

Надеюсь, это сработает.

1
ответ дан 1 December 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: