IRC Logs for #zfx


2024-04-24

07:00:18 Magister joined the channel
07:14:46 Schrompf joined the channel
07:22:51 xq: noin
07:24:43 Schrompf: moim!
12:10:25 Essex20 joined the channel
12:11:47 Essex20: moin
12:25:29 Schrompf: Herr Moinnelig!
12:25:36 Schrompf: ah mist, den hatte ich schonmal, glaube ich
12:25:38 Schrompf: verdammt
12:28:00 Essex20: Ersma heimfahren, brb
17:36:10 Hannes joined the channel
18:09:06 efjam88 joined the channel
18:09:25 efjam88: sers, ich bins wieder
18:09:51 efjam88: nochmal zu gestern:
18:10:07 efjam88: recv und send lassen auf sich warten
18:10:35 efjam88: gilt das auch für listen,accept usw
18:10:37 efjam88: ?
18:24:55 xq: ja
18:25:07 xq: listen ist wurst
18:25:10 xq: das ist iinstant
18:25:33 efjam88: ja?
18:25:38 xq: ja
18:25:50 xq: das OS weiss ja, welche ports existieren
18:29:48 efjam88: also: den socket der mein system aufhält hab ich jetzt mit nem extra port angesprochen
18:29:55 efjam88: ohne glück
18:30:59 xq: hast du irgendwo nen architektur-diagramm für dein system?
18:31:39 efjam88: keine erfahrung mit
18:31:46 xq: mit deinem system?
18:31:58 efjam88: mit diagrammen
18:32:10 xq: dann mal mal eines
18:32:13 xq: von dem, was du vor hast :)
18:32:16 xq: hilft sehr beim denken
18:32:29 efjam88: ahja
18:32:49 efjam88: ich könnt mal nochmal coed posten...
18:33:00 xq: wenn dann bitte *alles*
18:33:04 efjam88: auch wenn das böser murks ist
18:33:07 xq: vollständiges projekt, so dass es auf einer maschine baubar ist
18:34:17 efjam88: das projekt is recht umfangreich
18:36:23 efjam88: zuerst mal: https://pastebin.com/FAYe84BU
18:37:27 xq: @ikskuh_bridge_bot: dafür gibts github oder zip files
18:37:47 xq: bin mal afk
18:37:49 efjam88: https://pastebin.com/vcehTnsk
18:37:50 efjam88: ok
18:37:57 xq: ich schau später mal rein
18:38:11 xq: bitte schildere dein problem so, dass ich es ohne rückfragen verstehe
18:40:57 Schrompf joined the channel
18:45:23 efjam88: hi schrompf!
18:47:15 Schrompf: hey
18:48:15 efjam88: ich bin noch an dem prob von gestern (glaub ichi)
18:49:19 efjam88: meine rand-sockets (also die ich für zufälle nutze) blockieren das system
18:49:47 efjam88: darf ich stören?
18:50:38 Schrompf: mäh?
18:50:56 Schrompf: socket? zufall? *system* blockieren, nicht nur deinen thread?
18:51:04 efjam88: ne
18:51:15 efjam88: den hauptthread
18:51:29 efjam88: sry falsch formuliert
18:52:35 efjam88: jezt hab ich versucht den mit nem extra port zu behandeln
18:53:29 efjam88: aber an der stellen wo ich auf den warte, wartet er immernoch
18:53:29 Schrompf: ok, dein thread blockiert. das ist bei nem synchronen (also blockierenden) read zu erwarten
18:53:47 Schrompf: ne, du brauchst nen extra thread, oder asynchrones read
18:54:06 Schrompf: noch nen socket ändert nix daran, dass das synchrone read darauf auch wieder blockiert
18:54:34 efjam88: aso
18:55:11 efjam88: wenn der fehler am socketerstellen liegen würde, würde er an der stelle ned warten richtig?
18:55:28 efjam88: oderf wie?
18:56:18 Schrompf: das passt für mich nicht zusammen. 1) ist es kein fehler, sondern design, dass blockierendes lesen eben blockiert
18:56:29 Schrompf: und 2) hat read() nix mit socketerstellung zu tun
18:56:35 Schrompf: wobei...
18:56:42 Schrompf: evtl. doch, und ich bin nur verwöhnt von asio
18:59:12 efjam88: vielleicht such ich auch an der falschen stelle
19:00:42 Schrompf: zeig mal ein mini-stück code von der socket-erstellung und dem teil, wo du liest, und markiere mir die exakte stelle, wo es blockiert
19:01:01 Schrompf: nicht raten, bitte, sondern da, wo du *gesehen* hast, dasss der debugger nennenswert zeit verbracht hat
19:01:06 xq: Schrompf: efjam sollte für mich mal ein diagramm machen und den code hochladen, damit kann man dann auxh gscheid helfen, siehe log
19:01:15 Schrompf: ah
19:01:20 efjam88: https://pastebin.com/FAYe84BU
19:01:27 efjam88: <-- 1.
19:01:40 efjam88: 2. --> https://pastebin.com/vcehTnsk
19:01:46 Schrompf: und was hat rand mit sockets zu tun? echter zufall kommt doch nur aus nem blockdevice, und ja, das liefert nur sehr sehr langsam
19:01:52 efjam88: bitte ned böse sei nüber meinen murks
19:02:15 efjam88: ich nen das "rand" in meinem projekt
19:02:29 efjam88: weil ich da zufälle übertrage
19:02:37 Schrompf: aaaaaaah
19:02:48 Schrompf: das ist ein standard-netzwerk-socket, und du nennst den nur rand
19:02:56 efjam88: richtig sry
19:02:59 Schrompf: ach mensch, da war ich echt falsch abgebogen
19:03:55 Schrompf: sind sockets von haus aus blocking oder non-blocking?
19:04:00 efjam88: blocking
19:04:08 efjam88: hab nix geändert
19:04:17 Schrompf: weil sonst seh ich dort jede menge blockierender operationen, wo halt nur zufällig die erste sofort zündet und dann halt die nächste blockiert
19:04:40 Schrompf: sprich: das alles steht ganz artig, wie es designt ist, jede zeile bleibt solange hängen, bis sie halt erfüllt wird
19:04:50 Schrompf: und was du brauchst, ist halt non-blocking mit events
19:05:25 efjam88: sry aber es hat auch schon funktioniert, glaub ich
19:06:38 efjam88: denk ich
19:08:06 xq: mit glauben kommt man beim coden leider nicht weiter
19:08:11 efjam88: ok
19:08:15 xq: wäre ja auch zu schön
19:08:37 efjam88: ich hab glaub was an den sockets geändert
19:09:06 xq: Schrompf: Ich bin grade mal wieder so happy über git blame ^^
19:09:42 efjam88: sry ich glaube viel
19:09:59 efjam88: bin mir gern unsicher
19:11:04 efjam88: jedenfalls hab ich was am programm geändert und bekommt der programm nicht mehr zum laufen
19:11:27 efjam88: #das
19:11:49 efjam88: ich bin dumm, tut mir leid
19:12:14 Schrompf: kein grund, sich selbst zu schinden
19:12:22 Schrompf: nur machen musst du selbst :-)
19:12:30 Schrompf: mach's non-blocking
19:12:50 Schrompf: oder pack alle operationen auf jeweils einem socket in einen eigenen thread
19:13:10 efjam88: hab ich hier und da
19:14:49 xq: oder nimm select
19:14:52 xq: select ist gut
19:14:54 xq: und performant
19:15:06 efjam88: ich hab hier und da select drinn
19:16:33 xq:
19:16:39 xq: in deinem code ist kein select oben
19:16:48 xq: und: du solltest nur ein einzelnes select haben
19:16:52 xq: im main loop
19:17:10 xq: und damit reagierst du dann auf eingehende events
19:25:17 efjam88: ich hab ja noch andere sockets mit denen ich die hauptsockets handhabe
19:25:33 efjam88: da benutze ich select
19:26:40 efjam88: und zwischendurch brauch ich halt n extra-socket
19:28:50 efjam88: zbsp: wenn ich zufälle zwischendurch weitergeben
19:29:33 efjam88: wil
19:29:34 efjam88: l
19:31:23 xq: wofür brauchst du so viele sockets?
19:31:29 efjam88: mom
19:31:42 xq: wie viele anwendungen willst du da verbinden?
19:34:13 efjam88: SOCKET* enemy, SOCKET* rand, SOCKET* connout, SOCKET* connin, SOCKET *cexit -> enemy ingamedaten, connout systemdaten, connin weiß ich nimmer, cexit als beendungstgrigger
19:34:25 efjam88: beendungstrigger
19:34:51 efjam88: und "rand" für ingame zufallsdaten
19:35:20 efjam88: naja es hat mal ziehmlich funktioniert
19:39:54 efjam88: ich weiß ihr schlag die hände auf m kopf zusammen
19:40:32 Schrompf: tatsächlich sollte es genau einen socket pro endpoint geben in so nem kontext
19:40:44 Schrompf: aber mei, wenn du das so magst, spricht auch nichts wirklich dagegen
19:41:04 Schrompf: nur daran, dass blockierende operationen halt blockieren, bis sie ein ergebnis haben, ist prinzipiell unvermeidbar
19:41:17 efjam88: ok
19:41:24 Schrompf: und wenn du das blockieren an der stelle nicht brauchen kannst, dann mach's halt unblockierend
19:41:41 efjam88: ich hab irgendwo n bug reingepackt
19:41:58 efjam88: wie gesagt ich bin schon s game reingekommen
19:42:12 efjam88: zwar sonstnoch fehler
19:42:50 efjam88: aber nun komm ich nimmer rein
19:43:34 efjam88: bzw. er baut auf aber keine weitere reaktion
19:44:20 efjam88: und ich habs eingegrenzt
19:44:46 efjam88: er wartet wo auf meinen zufallssocket
19:45:04 efjam88: (wenn man ne münze wirft)
19:47:23 xq: wicjrig
19:47:30 xq: du hast nur so ne hand voll sockets
19:47:43 xq: so ich sag mal, 50 pro anwendung
19:47:52 xq: eher weniger
19:48:05 xq: windows mit select hat glaube ich 16 oder 32 by default
21:29:55 efjam88: ok, muss offline, bis morgen, chö