Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.7.2 关于 pin 内存与阻塞的疑问 #651

Open
Cansult opened this issue Oct 29, 2024 · 0 comments
Open

2.7.2 关于 pin 内存与阻塞的疑问 #651

Cansult opened this issue Oct 29, 2024 · 0 comments

Comments

@Cansult
Copy link

Cansult commented Oct 29, 2024

有点不理解 2.7.2 中的这部分

任何完美的技术都有被滥用的时候,CGO 的这种看似完美的规则也是存在隐患的。我们假设调用的 C 语言函数需要长时间运行,那么将会导致被他引用的 Go 语言内存在 C 语言返回前不能被移动,从而可能间接地导致这个 Go 内存栈对应的 goroutine 不能动态伸缩栈内存,也就是可能导致这个 goroutine 被阻塞。因此,在需要长时间运行的 C 语言函数(特别是在纯 CPU 运算之外,还可能因为需要等待其它的资源而需要不确定时间才能完成的函数),需要谨慎处理传入的 Go 语言内存。

Goroutine 在调用 C 函数的过程(即使不 pin 内存)中本身不是阻塞的吗, 为什么还需要动态伸缩栈呢

期待解惑 感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant