использую например сам массив?
Может ли от этого повиснуть вся программа? И почему именно?
Пустой объект, который создали сами проще контролировать. Если этот массив, на который вы лочитесь убегает куда то наружу (отдаётся в свойстве/методе) кто-то снаружи тоже может сделать на него lock. Последствия разнятся от "ой, что-то всё медленно" до "дедлок, всё зависло". Ну и вдруг вы там поле с массивом переназначаете на новый массив? Lock об этом в курсе не будет, он будет держать старый экземпляр
А если я работаю с этим массивом, пока он в Шоке? У меня именно всё зависает, и не знаю как ловить. Похоже deadlock. Но точно знаю, что почти никогда не использовал отдельный объект для lock, но он нигде не должен переназначаться. Не уверен в причине, только подозреваю.
Просто работать с массивом - не должно давать проблем. Но вы уверены, что чей-то другой код не делает ненужных локов?
А если и делает, то всегда отпускает ведь. 🥺 Могло быть подвисание временное, но не вечное ведь, и сразу всего приложения. При том что всё работает в разных потоках. При попытке приостановить делаг, ничего не происходит.
Фокус дедлока как раз в том, что возникает ситуация, где никто из участников дедлока ничего не может отпустить, потому что все ждут чуда что отпустит кто-то другой. Доставайте отладчик, смотрите что и где именно виснет. Просто рассуждая о локах вы ничего не решите, нужно искать где
Вот отладчик то и не работает. Как можно отловить такое событие? Наверное, логгировать начало и конец каждого события? Но это не отладка.
Что значит, "не работает"?
Ну когда зависание произошло, можно только закрыть программу и всё. Что там происходит невозможно узнать. Пауза не включается
А кто сказал что отлаживать надо когда уже произошло? Ходите по шагам, снимите дамп и посмотрите где потоки зависли, обложите логированием. Столько способов как подступиться к проблеме, какой-нибудь да сработает.
Попробую, спасибо!
Я с помощью ею дебажу потоки https://marketplace.visualstudio.com/items?itemName=Diagnostics.DiagnosticsConcurrencyVisualizer2019
Так просто видеть то не поможет. Но спасибо, может поможет.
Если потоки криво неоптимально работают сразу видно
Обсуждают сегодня