gpt4 book ai didi

go - defer 会一直等到子程序执行完吗?

转载 作者:数据小太阳 更新时间:2023-10-29 03:30:23 24 4
gpt4 key购买 nike

我有这样的功能:

func TestDefer(lock sync.RWMutex, wait time.Duration) {

lock.Lock()
defer lock.Unlock()

// start goroutine
go func() {
time.Sleep(wait)
}()
}

我很想知道什么时候执行lock.Unlock()?它是否与子例程 go func() 同步?它会等到它完成吗?

最佳答案

不,一旦 go 语句完成执行(即 Go 运行时创建一个新的 goroutine 并将其放入某个运行队列),函数的执行就会继续,并且由于函数体到此结束,其中延迟的函数将运行。

goroutine 之间的同步只会显式发生——通过使用 sync 层次结构包中的原语的 channel 操作。

关于go - defer 会一直等到子程序执行完吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108247/

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