IO и CPU bound операциями, и правильно ли я ее понимаю:
1. IO bound. Допустим программа асинхронно шлет куда то запрос, в это время поток который отвечал за вызов этого запроса возвращается в пулл потоков, и когда код получит респонс, то из пулла потоков выделится поток для продолжения работы. В случае синхронного вызова поток бы не возвращался в пулл, а просто афк ожидал ответа (допустим пару секунд), в таком случае если много юзеров отправляли бы запросы, то со временем все потоки будут заняты ожиданием респонса и система на некоторое время просто не сможет принимать новые запросы.
2. CPU bound. Допустим программа через await Task.Run стартует какой то математический подсчет, который занимает 5 секунд. В таком случае для этой операции из пулла потоков выделяется поток, а поток в котором был вызов занимается другими операциями которые следуют после await Task.Run до тех пор пока нам не понадобится значение, которое возвращается из await Task.Run.
Все ли тут верно?
нет
Обсуждают сегодня