【发布时间】:2014-07-31 02:28:56
【问题描述】:
我知道在同步世界中,第一个 sn-p 是正确的,但是 WaitAsync 和 async/await 魔法又是什么?请给我一些 .net 内部结构。
await _semaphore.WaitAsync();
try
{
// todo
}
finally
{
_semaphore.Release();
}
或
try
{
await _semaphore.WaitAsync();
// todo
}
finally
{
_semaphore.Release();
}
【问题讨论】:
-
async/await不会改变异常的行为方式insideasync方法。它只会改变propagated outsideasyncmethod 的例外情况。所以,“同步词”的正确之处仍然在这里。 -
这篇文章解释了在实现
lock() {}时考虑了同样的问题:blogs.msdn.microsoft.com/ericlippert/2009/03/06/…
标签: c# .net locking async-await semaphore