C#学习教程:应该弃用Task.Wait吗?分享


应该弃用Task.Wait吗?

我学到了从池线程调用Task.Wait会导致线程饥饿死锁的困难方法。

根据这篇MSDN文章 ,在“死锁”一章中,我们应遵守这两条规则:

似乎唯一合法使用Task.Wait的地方是主要function – 我在这里夸大了一点,但你明白了。

为什么Task.Wait仍然是.NET框架的一部分,看它有多危险?

为什么Task.Wait仍然是.NET框架的一部分,看它有多危险?

因为您希望能够同步阻止Task 。 很少,但你仍然这样做。 正如你所说, Main可能是最受欢迎(最好是唯一)的地方。 这一点,以及微软因其向后兼容性而臭名昭着的事实,因此一旦引入,它就不太可能被弃用或从BCL中消失。 Task.WaitAll

当人们没有正确阅读文档并且不理解调用这种方法并最终滥用它的含义时,IMO就会出现真正的问题 。 如果你仔细使用它,它的工作就很棒。


另一件事是你不能总是一直异步 。 不幸的是,很多时候你有代码,它是签名同步的,不能改变,需要调用异步方法调用。 是的,这是危险的,并且被所有人劝阻,并被认为是具有异步代码的反模式 ,我自己已经回答了至少十二个关于SO的问题,人们最终陷入僵局并且不明白为什么,但TPL作者仍然需要使这些类型的调用成为可能。

上述就是C#学习教程:应该弃用Task.Wait吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031909.html

发表评论

邮箱地址不会被公开。 必填项已用*标注