2013-11-06 2 views
1

Я использую библиотеку и сокеты C++ 11 thread. Создаю нить для каждого сокета.Тайм-аут многопоточного таймера?

void connect_server(...) 
{ 
    //here socket (stream client) stuff with connecting, receiving and sending data 
} 

int main() 
{ 
    //... 
    for (...) 
     container.push_back(std::thread(connect_server, params)); 

    for (...) 
     thread.join(); 
    //... 
} 

Как проверить, является ли соединение таймаутом?

ответ

0

В качестве варианта вы можете использовать setsockopt() для установки значения таймаута с использованием SO_SNDTIMEO SO_RCVTIMEO. Когда сокет разблокируется после истечения времени ожидания, вы можете отправить сигнал основному процессу, просто закончить дочерний поток или что-нибудь еще.
Here крошечный сниппет о том, как настроить время ожидания соединения с помощью вызова select().

+0

Я хочу установить тайм-аут подключения не recv или отправить таймаут. –

+0

@ user2962442 Затем вы можете установить сокет в неблокирующий режим работы и использовать select() с таймаутом? – Michael

+0

он будет работать с многопоточным режимом? –

Смежные вопросы