Есть серверное приложение, осуществляющее асинхронное взаимодействие с рядом внешних систем посредством использования TAP. Так как async/await стремится распространяться везде по коду, количество цепочек async-await достаточно велико. Вопрос заключается в том, как лучше поступать: использовать при каждом await ConfigureAwait(false) или же продолжать выполнение в том же потоке. То есть, по сути, как будет более производительнее, брать любой свободный поток из пула для выполнения следующего вложенного await-а или же всю цепочку (например с уровнем вложенности равным 5) выполнять в рамках одного контекста. Насколько я понимаю, если не определять ConfigureAwait(false), то оставшаяся часть метода выполнится в том же потоке, но что, если этот поток сейчас занят? Будет ожидаться его освобождение? Что есть переключение контекста, это ожидание освобождения исходного потока или же перепрыгивания с одного потока на другой?
Asked
Active
Viewed 99 times
0
ConfigureAwait(false)используется в очень ограниченных случаях, не надо его использовать везде. Насчет скоростей - скорее всего разница будет минимальной или её вообще не будет. – Vasek Aug 03 '18 at 22:42То есть, насколько я понял, не важно, будет использоваться configureAwait или нет?Да не важно. – Vasek Aug 04 '18 at 19:45