170 похожих чатов

Допустим, сейчас выполняется 5 потоков из 5 возможных. еще насколько

в очереди на выполнение.

в одном из тех 5 выполняющихся потоков:

Task.Delay(10000); или DoSomethingAsync().GetAwaiter().GetResult() - поток в режиме выполнения, не даёт выполняться другому потоку из очереди.


await Task.Delay(10000); или await DoSomethingAsync() - поток встает типа в очередь, дает другому потоку из очереди начать выполнение и выполняться, пока ждет завершения тех штук. когда они завершатся, другой поток обратно встает в очередь, а этот продолжает выполняться

я правильно понял?

3 ответов

4 просмотра

1. что подразумевается под очередью потоков? Это TaskSchrduler, ThreadPool или что то сделанное на коленке? 2. Проблема блокировки других потоков , это проблема блокировки основного потока выполнения программы. Если он блокируется, то другие потоки не могут синхронизироваться с текущим контекстом.

Alexander Pavlenko
1. что подразумевается под очередью потоков? Это T...

но опять же если другие потоки запускаются по принципу, fire and forget им не нужен основной поток , и они будут выполнены в независимости блокировки основного потока

В стандартном случае всё работает не так. В то время, как ты ждёшь чего-то асинхронно , поток разблокируется и возвращается в пул. А вот если там блокирующее ожидание — тогда да, он будет тупо стоять и ничего не делать. У стандартного тредпула есть всякие эвристики для того, чтобы наличие таких заблокированных потоков не вызывало катастрофы. Но всё равно, лучше работать асинхронно, если есть возможность.

Похожие вопросы

Обсуждают сегодня

Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@NikaBelurgHR Бот? Ассемблер?
КТ315
11
юзеры Jetpack Compose тут?
Qtless Qtless
7
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Карта сайта