强制goroutine进入同一个线程

Gyö*_*sek 8 go goroutine

有没有办法确保goroutine只能在特定的OS线程中运行?例如,当GUI操作必须在GUI线程中运行时,可能存在多个运行GUI代码的goroutine.

GOMAXPROCS(1) 在技​​术上做的工作,但这违背了多线程的目的.

LockOSThread() 也工作,但这也阻止任何其他goroutine在该线程中运行.

有没有办法做到这一点,或者所有需要相同线程的东西也必须在同一个goroutine中运行?

Nic*_*son 8

据我所知,目前还没有.我认为执行此操作的"类似"方法是编写一个在GUI线程中运行的Goroutine,以及通过通道发送的其他goroutine的服务请求.例如,您可以从接受函数指针的通道读取它,并执行这些函数.

  • 您已经指出LockOSThread允许您将goroutine锁定到特定线程.只需对GUI线程执行此操作即可. (4认同)
  • -1您的回答"有没有办法确保goroutine只能在特定的OS线程中运行?" 是"写一个在GUI线程中运行的Goroutine"?这对我有什么帮助? (2认同)