Так что я пытаюсь использовать pthread_create, но я получаюАргумент типа несоответствие (аннулируются *)
error: argument of type ‘void* (server::)(void*)’ does not match ‘void* (*)(void*)’
Класс определяется следующим образом:
class server : public AL::ALModule
{
public:
server(boost::shared_ptr<AL::ALBroker> pBroker, const std::string& pName);
....
void *ThreadMain(void *arg);
}
};
А вот функция, где я звоню PTHREAD от:
int server::listen() {
TCPServerSocket servSock(6004);
...
for (;;) {
clntSock = servSock.accept();
...
pthread_t threadID;
pthread_create(&threadID, NULL, this->ThreadMain,(void *) clntSock);
...
}
}
Как бросить ThreadMain от сервера :: до *?
Заранее благодарен!
'ThreadMain' является функцией-членом. Если вы бросите его, он не будет делать то, что, по вашему мнению, будет. Вы должны сделать функцию 'static' и передать' this' в качестве аргумента, если ей нужно получить доступ к атрибутам класса. – agbinfo
Если нет необходимости обращаться к элементам-атрибутам, просто создайте статичность ThreadMain и она должна работать. – agbinfo
@agbinfo При попытке передать это как аргумент, я получаю: неверное преобразование из 'void * (*) (server &)' в 'void * (*) (void *)' –