Zig's Io.Threaded: Blocking Syscalls, volle Cancelation – ohne io_uring

Zig's Io.Threaded Is Neat

Zig's neue Io-Schnittstelle bietet mit std.Io.Threaded eine unspektakuläre, aber raffinierte Implementierung: Sie setzt auf gewöhnliche OS-Threads und blockierende Syscalls, unterstützt aber dennoch vollständige Cancelation. Der Trick auf POSIX basiert auf Signalen und einem Flag-Protokoll, um blockierende Syscalls zu unterbrechen. Im Vergleich zu Java und pthread_cancel integriert sich die Lösung sauber in Zigs Fehlerbehandlung und ermöglicht präzise Signaturen für asynchrone und konkurrierende Operationen.

Concurrency ist unweigerlich mit Cancelation verbunden: Wenn zwei asynchrone Berechnungen gleichzeitig laufen, kommt der Moment, in dem eine erkennt, dass die andere nicht mehr nötig ist – und aktiv abgebrochen werden muss.
  1. _old_dude_

    Nur um zu sagen, dass Java seit Anfang der 2000er unterbrechbare Kanäle hat. Du kannst eine blockierende E/A-Operation entweder mit interrupt() oder close() unterbrechen. https://docs.oracle.com/en/java/javase/25/docs/api/java.base...

  2. lll-o-lll

    Meine gesamte Zeit mit Low-Level-Zeug war in der Windows-Welt, wo async/cancel seit mindestens den NT-Kernel-Tagen unterstützt wurde. Es hat sich immer gelohnt, dies auf einer bestimmten Abstraktionsebene kohärent zu kapseln, obwohl Threads nur ein Weg sind. Overlapped I/O ermöglichte es, alles auf einem einzigen Thread zu erledigen. Linux wirkt schwieriger. Großartig, dass Zig dies mehr als "First-Class"-Feature unterstützt; nicht unbedingt erforderlich, aber es sieht nützlich aus.

  3. two_handfuls

    Oh Mann, das endet zu früh, ich würde gerne mehr lesen!

  4. phplovesong

    Ich weiß, dass Syntax nicht WIRKLICH wichtig ist, aber Zig ist syntaktisch einfach irgendwie unterdurchschnittlich. Es ist wirklich wortreich und hat Dinge, die willkürlich aus dem Bestehenden ausgewählt wurden. Zig-Code ist oft schwer zu lesen, weil er sehr verrauscht ist und seltsame Dinge enthält, die es in anderen Sprachen ohne Grund nicht gibt.

  5. zuzululu

    Ich entwickle in Rust, aber gibt es irgendeinen Grund, das in Zig zu tun? Was bietet es gegenüber Rust? Einen konkreten Nutzen für Endbenutzer oder Entwickler, die KI-gestützte Entwicklung verwenden?

Mehr von diesem Tag

2026-08-22