Информация об изменениях

Сообщение Re[10]: Как оптимизировать выполнения 10000 параллельных зад от 06.08.2016 1:34

Изменено 06.08.2016 1:47 LWhisper

Здравствуйте, Sharov, Вы писали:

S>Очевидно, что рукотворная вечная блокировка потоки в пул не вернет. Асинхронное IO потоки возвращает, ибо блокировка логическая. Т.е. 10000 соединений проблемой не должны быть.

Стоп. Сейчас речь о конкретном решении, предложенном в данной ветке — пакете AsyncEx и реализации AsyncManualResetEvent в нём. Судя по тому, что я вижу — там самая что ни на есть полноценная блокировка, удерживающая поток. Соответственно ни о каком "True Async" не может быть и речи.

Опять же — если вас не затруднит, приведите, пожалуйста, пример логической блокировки, которая возвращает поток в пул, а, после захвата блокировки, продолжает выполнение в новом потоке.
Re[10]: Как оптимизировать выполнения 10000 параллельных зад
Здравствуйте, Sharov, Вы писали:

S>Очевидно, что рукотворная вечная блокировка потоки в пул не вернет. Асинхронное IO потоки возвращает, ибо блокировка логическая. Т.е. 10000 соединений проблемой не должны быть.

Стоп. Сейчас речь о конкретном решении, предложенном в данной ветке — пакете AsyncEx и реализации AsyncManualResetEvent в нём. Судя по тому, что я вижу — там самая что ни на есть полноценная блокировка, удерживающая поток. Соответственно ни о каком "True Async" не может быть и речи.

Опять же — если вас не затруднит, приведите, пожалуйста, пример логической блокировки, которая возвращает поток в пул, а, после захвата блокировки, продолжает выполнение в новом потоке.

UPD:
На всякий случай переписал создание новой таски с использованием async delegate. Как и ожидалось, это ничего не изменило — несколько тысяч тредов, повисших на блокировке.
Task.Run(async delegate
{
    await Task.Delay(100);
    Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
    lock (_lock)
    {
    }
    await Task.Delay(100);
});