[C/C++] Sockets | Threads vs. Select

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Mr.Smoke, 2. Mai 2009 .

  1. 2. Mai 2009
    Sockets | Threads vs. Select

    Hey...
    Ich beschäftige mich gerade ein wenig mit Sockets.
    Bin jetzt soweit das es ja zwei arten von non blocking Threads gibt.
    Einmal mittels Threads zum andern per Select, wollte jetzt mal wissen was besser is?
    Select oder Threads?

    Oder evtl hab ich auch etwas falsch verstanden dann klärt mich bitte auf =)
     
  2. 2. Mai 2009
    AW: Sockets | Threads vs. Select

    Es wäre ziehmlich unperformant pro Socket einen Thread zu erstellen, außerdem würde der Socket dann innerhalb des Threads blocken, was auch nicht sinnvoll ist.

    select ist immer die bessere Wahl, da es nicht blockiert und bei Aktivitäten bescheid gibt, außerdem kannst du einen Timeout mit angeben, etc.
     
  3. 2. Mai 2009
    AW: Sockets | Threads vs. Select

    Also select() ist da eindeutig die bessere Wahl. Zumindestens fällt mir kein Fall ein bei dem Threads von Vorteil sein könnten.
    Das Problem bei Threads ist einfach, dass du einen erheblichen Aufwand treiben müsstest damit die Threads vernüntig miteinander kommunizieren können. Wenn du einen Zentralen "Thread"/Prozess hast über den alles läuft, dann hast du diesen Verwaltungsaufwand einfach nicht.
    Zudem kannst du mit select() auf einmal mehrere mögliche Statusänderüngen des Sockets überwachen. Also neben lese- auch Schreibzugriffe.

    Threads solltest du meiner Meinung nach allerdings benutzten wenn die bi-direktionale Kommunikation mit dem Verbindungspartner abgeschlossen ist und Datenpakete nur noch gesendet oder empfangen werden müssen. Typisches Beispiel: Webserver. Nachdem die HTTP-Anfrage interpretiert wurde, ist (erstmal) keine "Absprache" mit dem Client mehr nötig sondern es müssen einfach nur noch die Daten übermittelt werden.

    Grüße
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.