#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.
Комментариев нет:
Отправить комментарий