gpt4 book ai didi

go - runtime.LockOSThread 是否允许子 goroutine 在同一个操作系统线程中运行?

转载 作者:IT老高 更新时间:2023-10-28 13:10:44 27 4
gpt4 key购买 nike

我知道在 Go 中,runtime.LockOSThread()将 goroutine 绑定(bind)到一个 OS 线程,并且不允许其他 goroutine 在该线程中执行。对于子 goroutines 也是如此吗?

例如:

runtime.LockOSThread()
go func() {
go func() {
// Do something
}()
// Do something
}()

这两个 goroutine 是在一个独占的操作系统线程中执行还是只在第一个线程中执行?

最佳答案

The documentation对于 runtime.LockOSThread 说:

LockOSThread wires the calling goroutine to its current operating system thread. Until the calling goroutine exits or calls UnlockOSThread, it will always execute in that thread, and no other goroutine can.

(强调我的)

这意味着如果 Go 的某个实现按照您的要求进行,那将是错误的。

澄清一下:如果一个 goroutine 保留了一个线程,而另一个 goroutine 在同一线程上执行;那是错误的。

关于go - runtime.LockOSThread 是否允许子 goroutine 在同一个操作系统线程中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30646391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com