Предположим, у меня есть один класс, содержащий простой метод.Допустим, есть делегат с той же сигнатурой, что и у этого метода.
Я хочу запустить несколько длительных процессов, каждый из которых запускается из этого класса.Каждый процесс содержит событие, которое состоит из многоадресных делегатов того же типа, что и упомянутый выше делегат.Как только создается экземпляр каждого «рабочего» класса, упомянутый выше «управляющий» класс подписывается на событие рабочего с помощью того же простого метода, упомянутого выше.Когда работа каждого работника завершена, вызывается его событие.
В однопоточной среде эта архитектура довольно проста.Однако я планирую запускать каждый рабочий процесс в отдельном потоке.Поэтому несколько рабочих будут вызывать свои события (почти) одновременно, каждое из которых подписано простым методом управляющего класса.
Есть ли гарантия, учитывая, что делегаты неизменны, что каждый поток будет иметь эксклюзивный доступ кпростой метод?Меня не беспокоит блокировка кода в простом методе, я обеспокоен тем, что Thread # 1 вызовет метод с набором параметров, а Thread # 2 вызовет тот же метод почти в одно и то же время.
Перед тем, как поток № 1 войдет в оператор блокировки, может ли поток № 2 (который входит в метод почти одновременно с потоком № 2) перезаписать параметры, указанные в потоке № 1, в результате чего параметры потока № 2 будут эффективно обработаны дважды?
Я понимаю, что это немного глоток, я был бы рад предоставить больше информации.