Параллельное выполнение задачи с помощью async / await
В контекстеприставка приложение, использующееасинхронная / Await конструкции, я хотел бы знать, если этовозможно "продолжения» работать параллельно на нескольких потоках на разных процессорах.
Я думаю, что это так, поскольку продолжения размещены в планировщике задач по умолчанию (нет SynchronizationContext в консольном приложении), который является пулом потоков.
Я знаю, что конструкция async / await не создает никакого дополнительного потока. Тем не менее, должен быть хотя бы один поток, созданный для каждого процессора с помощью пула потоков, и поэтому, если продолжения размещены в пуле потоков, он может планировать продолжения задач параллельно на разных процессорах ... это 'Это то, о чем я думал, но почему-то вчера я действительно запутался в этом, и я больше не уверен в этом.
Вот простой код:
public class AsyncTest
{
int i;
public async Task DoOpAsync()
{
await SomeOperationAsync();
// Does the following code continuation can run
// in parrallel ?
i++;
// some other continuation code ....
}
public void Start()
{
for (int i=0; i