aboutsummaryrefslogtreecommitdiff
path: root/symtab.go
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-23 16:10:27 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-23 17:04:57 +0900
commit9042b995db7f0b9499e0c3087269505e5e817a58 (patch)
treeaee115207c6ee8f64a89d582f80c44d47cebc40b /symtab.go
parent1d545aa8a83ba34273b4692c78cf1981fc798658 (diff)
downloadkati-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.go19
1 files changed, 16 insertions, 3 deletions
diff --git a/symtab.go b/symtab.go
index 2331acf..f9f22de 100644
--- a/symtab.go
+++ b/symtab.go
@@ -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
}