Как работает cgo и какие проблемы с потоками?

Senior
79 просмотров
AFK Offer AI

cgo позволяет вызывать C код из Go. Каждый cgo вызов привязывает горутину к OS thread (LockOSThread), потому что C код не знает про Go scheduler. Это дорого: создаётся новый M если нужно. C код не может вызвать Go callback безопасно без runtime.LockOSThread. Много cgo вызовов = много OS threads = проблемы с памятью и GOMAXPROCS.

Следующий вопрос

Что такое pg_repack?