2016-04-11 9 views
0

Ich habe eine unter tcpserver class-Datei. Wenn ich eine Instanz davon in meiner Hauptklasse erstellen und es ausführen bekomme ich Fehler "unaufgelöster Funktionstyp" in boost_group . :: create_thread Funktion ich habe keine Ahnung, was ist der Grund, warum ich Methoden versucht Wechsel zu „const“ aber kein Glück jede Hilfe appriciatedboost :: thread_group :: create_thread (<nicht aufgelöster überladener Funktionstyp> error

void tcpserver::WorkerThread() const 
{ 
printf("test"); 
// std::cout << "Thread Start\n"; 
// io_service.run(); 
// std::cout << "Thread Finish\n"; 
} 

void tcpserver::StartServer() const { 

    boost::shared_ptr<boost::asio::io_service::work> work(
     new boost::asio::io_service::work(io_service) 
    ); 

    std::cout << "Press [return] to exit." << std::endl; 

    boost::thread_group worker_threads; 
    for(int x = 0; x < 4; ++x) 

    { 
     worker_threads.create_thread(WorkerThread); 
    } 

    std::cin.get(); 

    io_service.stop(); 

    worker_threads.join_all(); 


} 

Antwort

0

Sie eine Memberfunktion verwenden Threads zu erstellen Sehen Sie sich diese....: Start thread with member function

Im Allgemeinen benötigt eine Elementfunktion ein zu bedienendes Objekt, wenn es sich nicht um ein statisches Element handelt Sie können natürlich auch einen Verschluss (Lambda) verwenden.

+0

danke. Lambda-Ausdruck scheint gut zu funktionieren. –

+0

hat den Funktionsaufruf create_thread wie folgt geändert: worker_threads.create_thread ([this] {WorkerThread();}); –

Verwandte Themen