即時做一個C++類在內部,我想創建一個線程來執行類的功能,我該怎麼做?我給你看一些代碼。如何啓動一個運行類函數的boost線程?
成員函數我想在一個線程中運行:
void SocketServer::runServer(){
bool connected;
tcp::acceptor a(io_service, tcp::endpoint(tcp::v4(), puerto));
std::string data;
while(seguirFuncionando()){
miSocket = new tcp::socket(io_service);
std::cout << "Waiting for connection...\n";
a.accept(*miSocket);
std::cout << "Connected\n";
connected = true;
try{
while (connected){
data = readStr();
if (data.compare("")==0){
std::cout << "End of connection.\n";
}
else{
std::cout << data << "\n";
}
}
}
catch (std::exception& e){
std::cerr << "Exception in thread: " << e.what() << "\n";
}
}
}
什麼我嘗試做:
void SocketServer::runThreadServer(){
asio::thread t(runServer);
}
但它不編譯。錯誤:
沒有匹配函數調用'asio :: thread :: thread() 注意:候選是:asio :: thread :: thread(Function)[with Function = void(SocketServer :: *)( )]
我該怎麼做?
Thanx。
你可能想嘗試用[boost.bind(http://www.boost.org/doc/libs/1_48_0/libs/bind/bind.html) – 2012-02-10 17:27:43
@JoachimPileborg你能舉個例子嗎?即時通訊新的提振,而我有點失落:P – Alex 2012-02-10 17:29:25