Зачем нужен runtime.LockOSThread?

Middle
135 просмотров
AFK Offer AI

Три основных кейса. GUI программирование: macOS/Windows требуют, чтобы UI вызовы шли из main thread — init() { runtime.LockOSThread() }. CGo с thread-local state: некоторые C библиотеки хранят состояние в thread-local storage, горутина не должна мигрировать между тредами. Namespace операции в Linux: setns() работает на уровне треда, не процесса. Без LockOSThread планировщик может переместить горутину на другой тред между вызовами, и всё сломается.

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

Как реализовать barrier?