Posix Threads в с ++ - PullRequest
       22

Posix Threads в с ++

2 голосов
/ 24 февраля 2009

Как реализовать потоки posix в linux c ++. Программа smme при сохранении в формате ".c и запуске с использованием компилятора c - это нормально. Но в c ++ выдает ошибку ..

Я думаю, что сделал ошибку при компиляции есть ли тег для включения, например, "-lpthread" для c ++

Может кто-нибудь отправить действительный код ...?

На самом деле это мой код

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

и ошибка, которую я получаю

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*)â

Ответы [ 3 ]

5 голосов
/ 24 февраля 2009

Ваша packetreadertask функция должна быть функцией, которая принимает один void * в качестве параметра. Это важное сообщение об ошибке:

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

Ваша функция объявлена ​​примерно так:

void *packetreadertask();

где это должно быть:

void *packetreadertask(void *);
4 голосов
/ 24 февраля 2009

Вы можете изучить использование Boost.Threads. Он дает вам простую семантику в C ++ поверх pthreads на платформах, которые его поддерживают.

Но .... нет причин, по которым вы не можете использовать pthreads в программе на C ++. Ваши ошибки могут быть связаны с искажением символов, но мы не можем помочь вам более точно, не увидев ваш код или, по крайней мере, ваш вывод компилятора.

2 голосов
/ 24 февраля 2009

Вы используете -lpthreads при использовании g ++ так же, как и при использовании gcc. Пока вы не пытаетесь использовать нестатический указатель на функцию-член в качестве потока, тогда pthreads будет отлично работать с C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...