Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Winsock co lepsze select() czy wątki

Ostatnio zmodyfikowano 2013-11-29 16:42
Autor Wiadomość
braders
Temat założony przez niniejszego użytkownika
Winsock co lepsze select() czy wątki
» 2013-11-28 23:54:12
Tak jak w temacie interesuje mnie info dla serwera i klienta.
Dla klienta głównie od strony zminimalizowania potrzebnych zasobów i łącza.
Dla serwera szybkość programu.
P-97821
pekfos
» 2013-11-29 14:11:45
Co ma select() do wątków?
P-97836
DejaVu
» 2013-11-29 14:38:20
Domyślam się, że szukasz sobie pretekstu, aby nie używać funkcji 'select', ale niestety jest to 'zło konieczne'. Popatrz sobie na SFML-a pod kątem komunikacji sieciowej. Tutorial jest łatwy i klasy są wygodne w użyciu.
P-97839
Elaine
» 2013-11-29 16:14:58
O select najlepiej zapomnieć, jedyne sensowne wykorzystanie tej funkcji to zachowywanie kompatybilności z systemami, które nie mają nic lepszego.

Mainstreamowe systemy mają coś lepszego. Windows ma porty zakończenia wejścia/wyjścia, podobnie jak Solaris, Linux ma epoll, BSD (wliczając OS X) mają kqueue. I to tych mechanizmów należy używać, jeśli chce się uniknąć problemów ze skalowalnością.
P-97843
DejaVu
» 2013-11-29 16:29:50
@Alueril: to masz na myśli dla Windowsa?

http://msdn.microsoft.com​/en-us/library/windows/desktop​/ms741669(v=vs.85).aspx

SFML akurat używa select-a dla Windowsa:
C/C++
bool SocketSelector::wait( Time timeout )
{
    // Setup the timeout
    timeval time;
    time.tv_sec = static_cast < long >( timeout.asMicroseconds() / 1000000 );
    time.tv_usec = static_cast < long >( timeout.asMicroseconds() % 1000000 );
   
    // Initialize the set that will contain the sockets that are ready
    m_impl->SocketsReady = m_impl->AllSockets;
   
    // Wait until one of the sockets is ready for reading, or timeout is reached
    int count = select( m_impl->MaxSocket + 1, & m_impl->SocketsReady, NULL, NULL, timeout != Time::Zero ? & time: NULL );
   
    return count > 0;
}
P-97844
Elaine
» 2013-11-29 16:42:48
P-97848
« 1 »
  Strona 1 z 1