<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sockets und Threads]]></title><description><![CDATA[<p>ich hab hier mein Serverprogramm, das behandelt verbindungen zwischen geräten und kontroll-clients, um eine hohe effizienz zu haben wollte ich alle Socketverbindungen zu den geräten in ein fd_set legen und mit select auf eingang prüfen</p>
<p>da aber auch schreibvorgänge stattfinden, wollt ich lesen und schreiben entkoppeln, indem ich 2 threads verwende.</p>
<p>meine frage ist nun, kann man aus 2 threads heraus</p>
<p>1-tens auf socket A lesen und gleichzeitig auf socket B schreiben<br />
2-tens auf socket A gleichzeitig lesen und schreiben</p>
<p>(ich geh mal von einkernprozessoren btw. fehlender coreaufteilung aus also nicht wirklich &quot;gleichzeitig&quot;)</p>
<p>Threads sind die hölle, ich weis aber ich wüste auf anhieb keinen besseren weg</p>
<p>EDIT: konnte man an Sockets nicht auch irgendwie ein Event / eine Message hängen was dann bei daten auslöst ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179285/sockets-und-threads</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 00:11:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179285.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Apr 2007 07:10:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sockets und Threads on Fri, 20 Apr 2007 07:25:48 GMT]]></title><description><![CDATA[<p>ich hab hier mein Serverprogramm, das behandelt verbindungen zwischen geräten und kontroll-clients, um eine hohe effizienz zu haben wollte ich alle Socketverbindungen zu den geräten in ein fd_set legen und mit select auf eingang prüfen</p>
<p>da aber auch schreibvorgänge stattfinden, wollt ich lesen und schreiben entkoppeln, indem ich 2 threads verwende.</p>
<p>meine frage ist nun, kann man aus 2 threads heraus</p>
<p>1-tens auf socket A lesen und gleichzeitig auf socket B schreiben<br />
2-tens auf socket A gleichzeitig lesen und schreiben</p>
<p>(ich geh mal von einkernprozessoren btw. fehlender coreaufteilung aus also nicht wirklich &quot;gleichzeitig&quot;)</p>
<p>Threads sind die hölle, ich weis aber ich wüste auf anhieb keinen besseren weg</p>
<p>EDIT: konnte man an Sockets nicht auch irgendwie ein Event / eine Message hängen was dann bei daten auslöst ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269750</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Fri, 20 Apr 2007 07:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets und Threads on Fri, 20 Apr 2007 09:55:44 GMT]]></title><description><![CDATA[<p>*push*</p>
<p>sorry, aber das problem ist ich mach grad ne konzeption (und die soll vor feierabend auch n ergebnis liefern), deswegen muss ich das nochmal pushen</p>
<p>PS das mit dem event hab ich gefunden, aber iss doch cniht das was ich gesucht hatte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269852</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Fri, 20 Apr 2007 09:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets und Threads on Fri, 20 Apr 2007 10:15:31 GMT]]></title><description><![CDATA[<p>Wie &quot;gleichzeitig&quot; muss &quot;gleichzeitig&quot; sein? Bzw. &quot;gleichzeitig&quot; auf einem 1 Kern CPU wirds eh nicht geben, wie Du schon gesagt hast.<br />
Wenn es Dir nur darum geht, dass eine Socket Funktion nicht blockiert, dann kann es schon funzen wie Du es beschrieben hast. (Dazu ist ja auch die select() Fkt. da, um prüfen zu können, ob eine Fkt. blockieren wird.)<br />
Vorausgesetzt, Du kannst warten bis send() und recv() zurückkehren (angenommen, die Daten können direkt verschickt bzw. empfangen werden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269868</guid><dc:creator><![CDATA[marcomx]]></dc:creator><pubDate>Fri, 20 Apr 2007 10:15:31 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets und Threads on Fri, 20 Apr 2007 11:00:44 GMT]]></title><description><![CDATA[<p>nja ich geh mal worst case davon aus das mitten in der ausführung des recv, der send befehl startet und auf dem socket wo grad recv läuft versucht zu senden.</p>
<p>WENN der socket optimal arbeitet, müsste ich parallel aus dem recvbuffer lesen und in den sendbuffer schreiben können, der socket würde dann bei &quot;nächster gelegenheit&quot; die daten aus dem sendbuffer senden</p>
<p>wie gesagt, ich suche nur eine beschtätigung meine annahme, da ich eine critical section oder ein lock auf den socket vermeiden möchte</p>
<p>EDIT: ich schieb mal n beispiel nach</p>
<p>client -&gt; Server -&gt; Gerät</p>
<p>Client sendet Befehl zu Server, der zu Gerät sendet.<br />
Gerät brauch etwas zeit um zu antworten</p>
<p>Client sendet neuen Befehl zu Server, während Gerät seine Antwort auf Befehl 1 versendet.</p>
<p>Auf dem Socket vom Server zum Gerät liegt jetzt eine Nachricht vom Gerät vor, der eseThread liesst das paket, ABER genau im selben moment versucht der sende thread auf diesem socket auch zu schreiben.</p>
<p>würde das zu problemem führen? ist der socket intern dagegen geschützt? wie könnte ich das problem anders umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269900</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Fri, 20 Apr 2007 11:00:44 GMT</pubDate></item></channel></rss>