Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Непонятно с async-await в C# - 2

03.09.21 08:49
Re: Непонятно с async-await в C# - 2
 
alex445 свой человек
в ответ Murr 02.09.21 22:09, Последний раз изменено 03.09.21 08:53 (alex445)
один - пишет, другой - читает... и ни синхронизации, ни блокировки не надо-ть... во как...

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


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


Если организовать доступ к данным, чтобы деятельность потоков не пересекалась, то можно ничего не блокировать и не синхронизировать (синхронизировать нечего). Это как конвейер - пока одни делают что-то в одной части конвейера, другие делают другое в другой части - никто доступ другим к конвейеру не блокирует. Заблокирован только доступ к другим частям конвейера, за которые данные работники не отвечают и им они не нужны. Деятельность работников на конвейере не пересекается.


Там, где у меня что-то пересекалось, там я блокировал.

 

Перейти на