asio asynchron synchron
-
ok, also sollte ich doch bei asynchronen operationen bleiben.
Es hat mich halt einfach genervt wie die biespiele in der doc dermassen verwirrend kompliziert in eine klasse geflochten wurden, aber ok, danke
-
314159265358979 schrieb:
select ist doch asynchron...
Sei doch einfach leise wenn du keine Ahnung hast.

-
314159265358979 schrieb:
Also nach meiner Definition: blockierend = synchron, nicht blockierend = asynchron
Die Linux-manpages bezeichnen select auch als synchron.
select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - synchronous I/O
multiplexingAußerdem blockiert man mit select ja auch, einfach nur nicht häufiger als nötig.
-
einfach nur lol schrieb:
Sei doch einfach leise wenn du keine Ahnung hast.

Verzieh dich, unwerteres Lebewesen.
-
@314159265358979
Asynchron und non-blocking sind nicht das selbe.Non-Blocking heisst nur, dass man so arbeiten kann, dass nie ein Befehl (unerwünschterweise) blockiert.
Die Operationen (accept/recv/send/...) erfolgen aber immer noch "unmittelbar" (d.h. es ist alles nach dem Aufruf von accept/recv/send/... abgeschlossen), oder eben gar nicht (EWOULDBLOCK). Man braucht daher z.B. auch keine Puffer, die länger als ein recv/send/... Aufruf gültig sind (d.h. man kann z.B. auch mit Stack-Puffern arbeiten).
Asynchron dagegen bedeutet, dass man mit dem Funktionsaufruf (wie auch immer der dann heisst) nur sagt: fang jetzt an mit accept/recv/send/..., und sag mir wenn du fertig bist. D.h. man muss Puffer an das IO System übergeben, und garantieren dass diese so lange gültig bleiben, bis das IO System den Aufruf abgeschlossen hat.
Wichtiger Unterschied.
Was das Abbrechen angeht: das ist mit non-blocking IO am allereinfachsten, da man keine asynchronen Aufrufe canceln muss.
-
Jetzt regt er sich wahrscheinlich auf, weil du ihn belehrt hast.

-
Nein, nur über Vollspastis wie dich. Und nun verkriech wieder in das Loch, aus dem du hergekommen bist.
-
nur kurz braucht man async pro client ein socket?
-
alterbro schrieb:
nur kurz braucht man async pro client ein socket?
Ja. Bei einer Verbindung sind immer 2 Sockets miteinander verbunden.
Du könntest mal etwas mit den rohen Berkley Sockets basteln bevor du Asio benutzt.
-
ok seh mal rein,danke
-
314159265358979 schrieb:
einfach nur lol schrieb:
Sei doch einfach leise wenn du keine Ahnung hast.

Verzieh dich, unwerteres Lebewesen.