阻止我在 .net 代码中不断使用异步/等待模式的原因是,一旦创建异步方法,async 关键字就会在我的代码中传播,迫使我使所有方法异步。有没有一种模式可以有效地阻止这种情况?
阻止我在 .net 代码中不断使用异步/等待模式的原因是,一旦创建异步方法,async 关键字就会在我的代码中传播,迫使我使所有方法异步。有没有一种模式可以有效地阻止这种情况?
那么让我问你这个问题:你为什么使用async
/await
?您需要退后一步,决定是否想要异步代码的好处。如果您确实想要这些好处,那么您的代码必须是异步的。一旦你阻塞了一个线程,你就失去了异步的所有好处。那么实际上,如果您只是要阻塞线程,为什么还要使用异步代码呢?
也就是说,在某些情况下,部分 -async
堆栈是有道理的。例如,如果您的代码库是暂时地处于过渡状态。在这种情况下,您可以使用我的文章中描述的一种技巧棕地异步:
- 直接阻塞(可能会导致死锁)。
- 阻塞线程池线程(在不同线程和不同上下文上执行代码,可能会导致意外的并行性)。
- 使用线程池上下文阻塞当前线程(在不同的上下文中执行代码,可能会导致意外的并行性)。
- 阻塞具有单线程上下文的线程(在不同线程和不同上下文上执行代码)。
- 阻塞嵌套消息循环(可能会导致意外重入)。
所有这些都是黑客行为,并且都有不同的缺点。没有一种方法可以适用于所有情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)