Есть ли способ воспользоваться преимуществами неблокирующей синхронизации потоков, например описанной here, но при использовании объектов System.Threading.Task
в текущих версиях каркаса .Net?Неблокирующая синхронизация с использованием System.Threading.Task
Что я ищу в основном меняется этот код
new Task(() =>
{
lock (_lock)
{
...
}
});
в то, что не будет блокировать Threadpool нить, которая будет использоваться в Task
при выполнении операции под защитой замка.
Допустимо блокировать выполнение задач, если критическая часть недолговечна, и вы избегаете рисков взаимоблокировок. – Douglas
Также не используйте конструктор 'Task' явно. Вместо этого используйте 'Task.Factory.StartNew'. – Douglas
Тем не менее, если вы действительно нацелены на неблокирующую реализацию, способ пойти на разложение вашего алгоритма в ряд задач и продолжений. – Douglas