我与 tokio 合作很多,并且一直在使用产卵阻塞用于阻止线程的代码。然后我看到了文档就地块看起来它是前者的无限制(发送,“静态”)版本。
我的问题是,如果我已经在线程运行时,什么时候不建议使用 block_in_place ?每种驱动同步码的方法有什么区别和优点?如果我多次阻塞(例如同时在所有线程中),这会是一个问题吗?它是如何工作的?
我阅读了所有的 tokio 文档,但没有找到这些问题的答案,所以感觉在这里问是正确的。
如果你可以使用spawn_blocking
, 用它。
block_in_place
限制较少,因为它不要求其参数具有'static
寿命,但有两个缺点。首先,它使执行器执行额外的工作以将其他任务移出线程。其次,它阻止在同一任务上运行其他 future,这意味着没有意义join block_in_place
未来与其他未来。
如果我多次阻塞(例如同时在所有线程中),这会是一个问题吗?它是如何工作的?
你可以阅读实施block_in_place
使用起来不是问题block_in_place
除了额外的开销之外,还有很多。它calls spawn_blocking在执行内部传递的函数之前内部
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)