Kapitel 5. Unsere eigenen Kanäle aufbauen
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Kanäle können verwendet werden, um Daten zwischen Threads zu senden, und es gibt sie in vielen Varianten. Einige Kanäle können nur zwischen genau einem Sender und einem Empfänger verwendet werden, während andere von einer beliebigen Anzahl von Threads aus senden können oder sogar mehrere Empfänger zulassen. Einige Kanäle sind blockierend, was bedeutet, dass der Empfang (und manchmal auch das Senden) ein blockierender Vorgang ist, so dass dein Thread schläft, bis der Vorgang abgeschlossen werden kann. Einige Kanäle sind für den Durchsatz optimiert, während andere für eine niedrige Latenzzeit optimiert sind.
Die Variationen sind endlos, und es gibt keine Einheitsversion, die für alle Anwendungsfälle geeignet ist.
In diesem Kapitel werden wir ein paar relativ einfache Kanäle implementieren, um nicht nur einige weitere Anwendungen von Atomics zu erkunden, sondern auch um mehr darüber zu erfahren, wie unsere Anforderungen und Annahmen im Typsystem von Rust erfasst werden können.
Ein einfacher Kanal auf Mutex-Basis
Für eine einfache Kanalimplementierung sind keine Kenntnisse über Atomics erforderlich.Wir können ein VecDeque
nehmen, das im Grunde ein Vec
ist, das ein effizientes Hinzufügen und Entfernen von Elementen auf beiden Seiten ermöglicht, und es mit einem Mutex
schützen, damit mehrere Threads darauf ...
Get Rust Atomics und Schlösser now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.