C'è un modo per garantire che una goroutine venga eseguita solo in un thread del sistema operativo specifico? Ad esempio, quando le operazioni della GUI devono essere eseguite nel thread della GUI, ma potrebbero esserci più goroutine che eseguono il codice della GUI.Forzatura di goroutine nello stesso thread
GOMAXPROCS(1)
fa tecnicamente il lavoro, ma ciò vanifica lo scopo del multithreading.
LockOSThread()
funziona anche, ma questo impedisce a qualsiasi altra goroutine di funzionare anche in quel thread.
C'è un modo per farlo, o tutto ciò che richiede lo stesso thread viene eseguito anche nella stessa goroutine?
-1 La tua risposta a "C'è un modo per garantire che una goroutine venga eseguita solo in un thread del sistema operativo specifico?" è "scrivi una Goroutine che viene eseguita nel thread della GUI"? Come dovrebbe aiutarmi? –
Hai già sottolineato che LockOSThread ti consente di bloccare la goroutine su un thread specifico. Basta farlo per il thread della GUI. –
Ciò consente di bloccare la goroutine sul thread * current *, non su un thread specifico arbitrario. – robx