Правка условия гонки и оптимизация
Этот коммит содержится в:
родитель
2803240615
коммит
3772187d95
1 изменённых файлов: 25 добавлений и 13 удалений
|
@ -108,7 +108,15 @@ func (s *Storage) createNewWatcher() (*fsnotify.Watcher, error) {
|
|||
}
|
||||
|
||||
func (s *Storage) watcherListener() {
|
||||
for {
|
||||
s.lock.RLock()
|
||||
if s.watcher == nil {
|
||||
s.lock.RUnlock()
|
||||
s.reCreateWatcher()
|
||||
return
|
||||
}
|
||||
|
||||
defer s.lock.RUnlock()
|
||||
|
||||
select {
|
||||
case event, ok := <-s.watcher.Events:
|
||||
if !ok {
|
||||
|
@ -122,7 +130,6 @@ func (s *Storage) watcherListener() {
|
|||
log.Println("error:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
func (s *Storage) handleWatcherEvent(event fsnotify.Event) {
|
||||
log.Printf("Storage: %v: %v", s.filename, event.String())
|
||||
|
||||
|
@ -162,8 +169,13 @@ func (s *Storage) Close() {
|
|||
s.closeWatcher()
|
||||
}
|
||||
func (s *Storage) closeWatcher() {
|
||||
s.lock.RLock()
|
||||
if s.watcher != nil {
|
||||
s.watcher.Close()
|
||||
}
|
||||
s.lock.RUnlock()
|
||||
|
||||
s.lock.Lock()
|
||||
defer s.lock.Unlock()
|
||||
s.watcher = nil
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче