Через atomic.CompareAndSwapInt32 в цикле: for !atomic.CompareAndSwapInt32(&lock, 0, 1) { runtime.Gosched() }. Но spin lock в Go почти всегда плохая идея: горутины не привязаны к CPU, спинящая горутина блокирует P и не даёт другим работать. sync.Mutex уже делает short spin перед парковкой. Используй Mutex.
Как реализовать spin lock на Go?
Senior
58 просмотровAFK Offer AI
Что такое go:linkname?