Ich arbeite mit einem Benutzermodus-Treiber für kleine USB-Geräte. Meine USB-Leseschleife sollte sehr reaktionsschnell sein und die Operationen, die sie ausführt, sollten sehr klein sein (nicht notwendigerweise atomar). Wie eine Interrupt-Service-Routine in einem Kernel-Modus-Treiber. In einer Verarbeitung muss ich einen Thread erstellen und einige Parameter an diesen Thread innerhalb dieser Leseschleife übergeben.Haben Sie einen bereits erstellten Thread zu jeder Zeit oder erstellen Sie den Thread bei Bedarf
Also muss ich die genaue obere Grenze dieser Operation wissen. Es dauert nicht mehr als 200mS oder so.
Die nächste Alternative besteht darin, die Thread-Initialisierung zur Einrichtungsinitialisierungszeit (Sondierungszeit) durchzuführen und dann diesen Thread zu warten, bis ich es aus dem Lese-Thread signalisiere. Aber in diesem Szenario läuft der Thread immer und es wäre teuer.
Was ist die beste Option? Meine Plattform ist Linux, und sie sagten, in Linux, Thread-Erstellung haben sehr kurze Operation. Ich muss entscheiden, was am besten ist. Bewahren Sie den Thread zu jeder Zeit am Leben oder erstellen Sie den Thread bei Bedarf.
Haben Sie versucht, beide Optionen zu messen/zu gewinnen? –
Ja, erstellen Sie den Thread zu jeder Zeit und warten auf Signal vom Thread lesen ist Speicherverschwendung, da Thread-Block Speicher ist. Andernfalls könnte der Lese-Thread eine hohe Latenz haben, wenn der Thread aus der Leseschleife erstellt wird. –