diff options
author | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-06-23 16:10:27 +0900 |
---|---|---|
committer | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-06-23 17:04:57 +0900 |
commit | 9042b995db7f0b9499e0c3087269505e5e817a58 (patch) | |
tree | aee115207c6ee8f64a89d582f80c44d47cebc40b /symtab.go | |
parent | 1d545aa8a83ba34273b4692c78cf1981fc798658 (diff) | |
download | kati-9042b995db7f0b9499e0c3087269505e5e817a58.tar.gz |
reduce reading makefiles.
make most global things (makefileCache, symtab, stats, shellStats,
wildcardCache) concurrent safe.
Diffstat (limited to 'symtab.go')
-rw-r--r-- | symtab.go | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -14,13 +14,26 @@ package main -var symtab = make(map[string]string) +import "sync" + +type symtabT struct { + mu sync.Mutex + m map[string]string +} + +var symtab = &symtabT{ + m: make(map[string]string), +} func intern(s string) string { - if v, ok := symtab[s]; ok { + symtab.mu.Lock() + v, ok := symtab.m[s] + if ok { + symtab.mu.Unlock() return v } - symtab[s] = s + symtab.m[s] = s + symtab.mu.Unlock() return s } |