Страницы

Поиск по вопросам

среда, 4 декабря 2019 г.

Почему не рекомендуется использовать Thread.Resume() и Thread.Suspend()?

#c_sharp #многопоточность #потоки_данных #net


Почему не рекомендуется использовать Thread.Resume() и Thread.Suspend()?    


Ответы

Ответ 1



Не рекомендуется их использовать неверно. Но если по правилам, то Thered.Resume() должен вызывать другой тред (по понятным причинам, тред не может сам себя снять с паузы), а вот Thered.Suspend() должен вызывать тред только у себя самого. У другого треда вызывать этот метод нельзя, так как непонятно, где именно он остановится. А не рекомендуют их, потому что есть много хороших и разных способов синхронизации: критические секции, мютексы, события, семафоры и так далее.

Ответ 2



Взято отсюда - раздел #Suspend and Resume: From .NET 2.0, Suspend and Resume have been deprecated, their use discouraged because of the danger inherent in arbitrarily suspending another thread. If a thread holding a lock on a critical resource is suspended, the whole application (or computer) can deadlock. This is far more dangerous than calling Abort — which results in any such locks being released (at least theoretically) by virtue of code in finally blocks.

Комментариев нет:

Отправить комментарий