Gibt es eine Möglichkeit, sicherzustellen, dass eine Goroutine nur in einem bestimmten OS-Thread ausgeführt wird? Zum Beispiel, wenn GUI-Operationen im GUI-Thread ausgeführt werden müssen, aber mehrere GUI-Routinen, die GUI-Code ausführen.Erzwingen von Goroutines in denselben Thread
GOMAXPROCS(1)
macht den Job technisch, aber das vereitelt den Zweck des Multithreading.
LockOSThread()
funktioniert auch, aber das verhindert, dass andere Goroutine in diesem Thread als auch ausgeführt wird.
Gibt es eine Möglichkeit dies zu tun, oder muss alles, was den gleichen Thread benötigt, auch in der gleichen Routine laufen?
-1 Ihre Antwort auf "Gibt es eine Möglichkeit sicherzustellen, dass eine Goroutine nur in einem bestimmten Betriebssystem-Thread ausgeführt wird?" ist "schreibe eine Goroutine, die im GUI-Thread läuft"? Wie soll das mir helfen? –
Sie haben bereits darauf hingewiesen, dass Sie mit LockOSThread die Goroutine an einen bestimmten Thread binden können. Tun Sie das einfach für den GUI-Thread. –
Damit können Sie die Goroutine auf den * aktuellen * Thread, nicht auf einen beliebigen spezifischen Thread sperren. – robx