[2
理解限制:和
锁定语句中的内部。此限制是预防常见错误来源的关键设计选择:僵局。
Microsoft的文档解释说,
lock 中的表达式会产生风险。 代码的执行可以在
等待后暂停,从而产生控制,以后在潜在的不同线程上恢复。此正时差距可能导致其他线程获得锁,逆转锁定顺序并导致死锁的情况。
让我们检查一个假设的例子:
类async
{
公共静态异步任务
此代码试图模仿异步锁定,但是正如编译器所指出的那样,它很容易在[
内无限期阻止。 发生这种情况是因为[可能会在与获取锁(可能违反锁定订单的锁定的线程)上执行。
本质上,
的禁令是避免多线程应用程序中的死锁的主动措施。 最好避免将异步操作与锁
语句相结合,并考虑从[[&&&&&&&threading [&& && && && && && && princterives诸如reader-writer locks或同步pientives)等替代同步方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3