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*)â
-
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.
-
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++.
-
Your
packetreadertaskfunction must be a function that takes a singlevoid *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 *);Chaithra : thanks yaar.. it worked... thanks once again....
0 comments:
Post a Comment