Size: a a a

2020 May 23

LS

Leonid Starchenko in Go-go!
Спасибо, буду курить
источник

ЛА

Локоть Анатолий... in Go-go!
Leonid Starchenko
Всем привет. Посоветуйте что то для управления потоками, у меня какая то фигня в программе происходит, и периодически программа крашится
  wg.Add(1)
     go func(value string) {
       defer wg.Done()
       bots++
       if pchecker(value) == 1 {
         bots--
         StartSpy(value)
       }
         bots--
     }(value)
-race флаг при компиляции  заставит программу паниковать в случае data race. Когда вы читаете или общую переменную в нескольких потоках, это data race , и добром это не закончится
источник

DP

Daniel Podolsky in Go-go!
Локоть Анатолий
-race флаг при компиляции  заставит программу паниковать в случае data race. Когда вы читаете или общую переменную в нескольких потоках, это data race , и добром это не закончится
читать - сколько угодно

параллельно читать-писать или писать-писать нельзя
источник

LS

Leonid Starchenko in Go-go!
Локоть Анатолий
-race флаг при компиляции  заставит программу паниковать в случае data race. Когда вы читаете или общую переменную в нескольких потоках, это data race , и добром это не закончится
Спасибо, тоже полезное замечание. Сейчас попробую
источник

LS

Leonid Starchenko in Go-go!
Daniel Podolsky
читать - сколько угодно

параллельно читать-писать или писать-писать нельзя
вот кажется у меня где то именно это и закралось)
источник

ЛА

Локоть Анатолий... in Go-go!
Daniel Podolsky
читать - сколько угодно

параллельно читать-писать или писать-писать нельзя
Ну да, да. Чтение+запись или 2 записи нельзя
источник

p

pragus in Go-go!
Владимир Гришин
так, а как же message passing over shared memory?
Что именно смущает?
источник

p

pragus in Go-go!
Dmitry M
Locker вроде как должен защищать от ложного срабатывания sync.Cond. Зачем делать пустым?
Тебе тут Locker нужен только ради возможности усыпить/разбудить горутину. Можно на каналах сделать, но зачем?
источник

SK

Sergey Krivosheev in Go-go!
pragus
Ну да ) пустой Locker + sync.Cond )
А можно пример? Если не сложно
источник

p

pragus in Go-go!
Leonid Starchenko
Всем привет. Посоветуйте что то для управления потоками, у меня какая то фигня в программе происходит, и периодически программа крашится
  wg.Add(1)
     go func(value string) {
       defer wg.Done()
       bots++
       if pchecker(value) == 1 {
         bots--
         StartSpy(value)
       }
         bots--
     }(value)
bots как в горутине появляется?
источник

LS

Leonid Starchenko in Go-go!
pragus
bots как в горутине появляется?
Хмм...
источник

LS

Leonid Starchenko in Go-go!
А и правда) никак xD
источник

LS

Leonid Starchenko in Go-go!
Это глобалка
источник

DP

Daniel Podolsky in Go-go!
если никак - оно бы не скомпилялось
источник

DP

Daniel Podolsky in Go-go!
а так - на этой глобалке горутины и склашились
источник

p

pragus in Go-go!
Leonid Starchenko
Это глобалка
И вы её инкрементируете из разных горутин. Добро пожаловать в гонку
источник

LS

Leonid Starchenko in Go-go!
Есть общепринятые идеи о том делают в подобных ситуациях?
источник

DP

Daniel Podolsky in Go-go!
есть, я даже ссылку вам дал :)
источник

p

pragus in Go-go!
Sergey Krivosheev
А можно пример? Если не сложно
Пример чего именно?
источник

LS

Leonid Starchenko in Go-go!
Daniel Podolsky
есть, я даже ссылку вам дал :)
хехе) читаю как раз, просто подумал вдруг что еще, с точки зрения чисто подхода)
источник