Правка условия гонки и оптимизация

Этот коммит содержится в:
Softonik 2024-02-28 17:00:03 +03:00 коммит произвёл Nobody
родитель 2803240615
коммит 3772187d95

Просмотреть файл

@ -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
}
}