Open
Description
有点不理解 2.7.2 中的这部分
任何完美的技术都有被滥用的时候,CGO 的这种看似完美的规则也是存在隐患的。我们假设调用的 C 语言函数需要长时间运行,那么将会导致被他引用的 Go 语言内存在 C 语言返回前不能被移动,从而可能间接地导致这个 Go 内存栈对应的 goroutine 不能动态伸缩栈内存,也就是可能导致这个 goroutine 被阻塞。因此,在需要长时间运行的 C 语言函数(特别是在纯 CPU 运算之外,还可能因为需要等待其它的资源而需要不确定时间才能完成的函数),需要谨慎处理传入的 Go 语言内存。
Goroutine 在调用 C 函数的过程(即使不 pin 内存)中本身不是阻塞的吗, 为什么还需要动态伸缩栈呢
期待解惑 感谢
Metadata
Metadata
Assignees
Labels
No labels