Chaithra
Chaithra

Reputation: 1140

Posix Threads in c++

How to implement posix threads in linux c++.The smme program when saved as ".c and run using c compiler is ok. but in c++ it is giving error ..

I think i made mistake when compiling is there any tag to be included like "-lpthread" for c++

Can someone pls send a valid code...?

Actually this is my code

int cooperbussman :: startlistenthread()
{
        if(pthread_create(&m_thread,0,&packetreadertask,0)<0)
        {
                cout<<"Unable to create the thread Startlistenthread\n";
                return -1;
        }
        return 1;

and the error i am getting is

cooperbussman.cpp: In member function âint cooperbussman::startlistenthread()â:
cooperbussman.cpp:76: error: invalid conversion from âvoid* (*)()â to âvoid* (*)(void*)â
cooperbussman.cpp:76: error:   initializing argument 3 of âint pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)â

Upvotes: 2

Views: 2236

Answers (3)

Greg Hewgill
Greg Hewgill

Reputation: 993143

Your packetreadertask function must be a function that takes a single void * as a parameter. This is the important error message:

cooperbussman.cpp:76: error: invalid conversion from âvoid* (*)()â to âvoid* (*)(void*)â

Your function is declared something like this:

void *packetreadertask();

where it must be:

void *packetreadertask(void *);

Upvotes: 5

Judge Maygarden
Judge Maygarden

Reputation: 27593

You use -lpthreads when using g++ just as you would with gcc. As long as you are not trying to use a non-static member function pointer as a thread then pthreads should work just fine with C++.

Upvotes: 2

Ben Collins
Ben Collins

Reputation: 20686

You might look into using Boost.Threads. It gives you some simple semantics in C++ over pthreads on platforms that support it.

But....there's no reason why you can't use pthreads in a C++ program. Your errors may be due to symbol mangling, but there's no way for us to help you more precisely without seeing your code or at least your compiler output.

Upvotes: 4

Related Questions