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