runtime: safe mutex initialization

This commit is contained in:
Li Jie
2025-02-16 20:09:06 +08:00
parent 51755b8da3
commit 22f4924d8e
4 changed files with 193 additions and 43 deletions

View File

@@ -312,12 +312,13 @@ var itabTable struct {
entries []*Itab
}
func init() {
(*sync.Mutex)(&itabTable.mutex).Init(nil)
}
type mutex sync.Mutex
func (m *mutex) Lock() {
if *(*c.Long)(unsafe.Pointer(m)) == 0 {
(*sync.Mutex)(m).Init(nil)
}
(*sync.Mutex)(m).Lock()
}