[英]Non-blocking synchronization using System.Threading.Task
有没有办法从非阻塞线程同步的优势中受益,例如此处描述的,但在当前.Net框架版本中使用System.Threading.Task
对象时?
我正在寻找的是改变这段代码
new Task(() =>
{
lock (_lock)
{
...
}
});
进入不会阻塞Task
在执行受锁保护的操作时使用的线程池线程的东西。
如果要使用.Net 4.0 TPL执行此操作,可以使用自定义TaskScheduler
,例如ParallelExtensionsExtras中的LimitedConcurrencyLevelTaskScheduler
。
如果你可以使用C#5.0中,你可以使用await
连同SemaphoreSlim.WaitAsync()
或AsyncLock
从NITO AsyncEx 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.