Using pthread in c++
Solution 1
You might try using the -pthread option to g++.
-pthread
Adds support for multithreading with the pthreads library. This
option sets flags for both the preprocessor and linker.
Solution 2
Do your pthread header files have extern "C" { ... }
around the function prototypes? That's the usual case for the linker not being able to link in C++.
It occurs because C++ generally does name-mangling so that it can encode parameter details into symbols (allowing polymorphism). For example, the functions:
void x(int);
void x(void);
void x(char,int,float,double);
all get different linker symbols.
If the header files don't have the extern "C" { ... }
, you may need to do it yourself:
extern "C" {
#include <pthread.h>
}
Hopefully that will work.
ogzylz
Updated on October 04, 2020Comments
-
ogzylz over 3 years
I am using
pthread.h
in a*.cc
file. when I try to usepthread_exit(0);
orpthread_join(mythrds[yy],NULL);
it says:.cc:(.text+0x3e): undefined reference to `pthread_exit'
when complied very similar code in a
*.c
file with gcc it work perfect. How Can I use pthread's in c++.. (I also added -lpthread).. void *myThreads ( void *ptr ) { ... pthread_exit(0); } ..
flags:
g++ -lpthread -Wall -static -W -O9 -funroll-all-loops -finline -ffast-math
-
ogzylz about 14 yearsthnks a lot, it reaaaaaaaallly helped. I thought -lpthread was doing the same think but it isnt.
-
ogzylz about 14 yearsthnk but the problem was not that.
-
Flexo over 13 yearsYou can find out what -pthread does on your platform using 'gcc -dumpspecs' and looking for things that begin '%{pthread'
-
David Schwartz almost 13 yearsThe '-lpthread' option only includes the pthread library. That may not be sufficient on your platform to get pthreads support.