In einer Linux-Anwendung verwende ich Pipes, um Informationen zwischen Threads weiterzuleiten.sind Posix-Rohre leicht?
Die Idee hinter der Verwendung von Pipes ist, dass ich mit poll (2) auf mehrere Pipes gleichzeitig warten kann. Das funktioniert in der Praxis gut und meine Fäden schlafen die meiste Zeit. Sie wachen nur auf, wenn es etwas zu tun gibt.
Im User-Space sehen die Pipes genau wie zwei Dateigriffe aus. Jetzt frage ich mich, wie viel Ressourcen solche Rohre auf der OS-Seite verwenden.
Btw: In meiner Anwendung sende ich immer nur einzelne Bytes. Stellen Sie sich meine Pipes als einfache Nachrichtenwarteschlangen vor, die es mir ermöglichen, empfangene Threads zu wecken, ihnen mitzuteilen, dass sie Statusdaten senden oder beenden sollen.
Posix gibt die Rohrschnittstelle an, nicht die Implementierung, wo das "Gewicht" herkommt. –
Wie viele Kanäle? Wie viele Nachrichten pro Sekunde? Hunderte? Millionen? Erstellen Sie einen einfachen Prototyp mit verschiedenen Technologien (von IPC-Nachrichtenwarteschlangen über Pipes bis hin zu UNIX-Sockets usw.) und vergleichen Sie diese. –