MK-Gii Ответов: 3

Приостановка / возобновление другого потока.


Эй,

Я получил следующий случай:

1. поток T1 работает с некоторой работой.
2. Резьба Т2 проверки, если какое-либо значение "ИСТИНА/ложь". если это "true" - T2 должен приостановить выполнение T1 и возобновить его после того, как значение снова станет "false".

Это тривиальный вопрос, но ..... поток, который я хочу приостановить (T1), был создан из другого процесса, и я не могу изменить его код. Хотя я могу получить его ссылку или удостоверение личности.

Есть какие-нибудь мысли о том, что может быть лучшим выходом?

Спасибо!

Что я уже пробовал:

Я думал об AutoResetEvent, но не уверен, как его использовать, когда я не должен изменять код потока, который я хочу остановить...

3 Ответов

Рейтинг:
2

Patrice T

Это плохое решение вашей проблемы. Никогда не делай этого.

То, что вы делаете, - это создаете переключатель, который позволяет вам мгновенно остановить машину. каково бы ни было его положение или положение, обратите внимание, что вы не знаете, где находится автомобиль.
Представьте себе, что автомобиль находится на левой линии автострады или пересекает железную дорогу, что произойдет ?

Сформулируйте проблему, может быть, есть другое решение.


Рейтинг:
1

Suvabrata Roy

Привет,

Для углубленных знаний : Параллельная обработка и параллелизм в .NET Framework[^]

Для быстрой справки : Обзор примитивов синхронизации[^]


Рейтинг:
1

Dave Kreskowiak

Взгляните на этот[^].

Но одно предупреждение. Если поток, который вы пытаетесь приостановить, не написан с учетом его приостановки, вы можете вызвать всевозможные проблемы параллелизма в другом процессе, с которыми вы ничего не сможете поделать.