Login
Непонятно с async-await в C# - 2
1777 просмотров
Перейти к просмотру всей ветки
in Antwort alex445 02.09.21 21:15
Но в любом случае, async/await не заменяет нормальную работу с потоками (Thread, lock, всякие MemoryBarrier и прочее).
Ну понятно что не заменяет - это разные модели.
Даже, пожалуй, наоборот - если ты хорошо знаешь, как работать с потоками и писать потокобезопасный код, ты можешь вообще без async/await обходиться, а просто загонять всё явно в другие потоки и "вручную" синхронизировать их.
Для async/await (в базовой модели) нужен только один поток, поэтому про синхронизацию и потоки можно спокойно забыть (что в ЖС и происходит). А реализовать самому конечно можно, чем люди десятки лет занимались. Например, на чем поднялся nginx? Правильно, на неблокировочных операциях. Это значит что может быть тысячи активных соединений (таски в очереди) и один рабочий поток со всем справляется, когда у стандартного Апачи есть несколько рабочих потоков и он скрипит от напряга, поскольку потоки блокируются.
У меня в реальном времени с платы сбора данных поступали данные.
Это вообще другая тема. Тут надо посмотреть в сторону стриминга: ReactiveX, например, для C# GitHub - dotnet/reactive: The Reactive Extensions for .NET