Jetzt könnte man natürlich auf den blockierenden Modus umstellen, aber dann kann ich ja auch bei den Indys bleiben, mit denen ich eine funktionierende Kommunikation schon im Griff hatte.
Ich hatte mir nur gedacht, dass ich mit den nicht blockierenden Sockets performanter bin und halt ohne pulls auskomme.
Schicken die non blocket sockets eigentlich interne Pulls und erzeugen letztlich auch eine Last auf dem Netzwerk und der CPU?
Oder sind Pulls aller 1/2 Sekunde von den Clients schon teurer?
Von der Performance her sind die non-blocking Sockets sogar geringfügig langsamer, weil dort alle Events über Window-Messages getriggert werden, die zuerst den kompletten Weg durch die MessageQueue nehmen müssen. Das Pullen von blocking Sockets ist
sehr sparsam was CPU Last angeht. Windows regelt die kompletten Synchronisationsmechanismen im Kernel, weshalb zwar einmalig ein Context-Switch stattfinden muss, aber danach bekommt der entsprechende Thread vereinfacht ausgedrückt einfach keine CPU-Zeit vom Scheduler mehr zugeteilt, bis neue Daten vorliegen.