【发布时间】:2022-01-14 06:22:41
【问题描述】:
我有一个具体问题,在高级语言中我可以使用 async/await 来解决:我们有一个阻塞的系统/硬件通信/网络调用,需要几秒钟才能完成。我们希望在并行执行其他一些此类调用时在后台发生这种情况。
我已经想到了几个解决方案,可能还有比这些更好的解决方案:
-
启动线程并在条件变量/信号量完成后发出信号 完成;
-
提供在调用完成时执行的回调 (旧的 JavaScript 风格);
-
创建您自己的自定义调度程序以 实际上模仿 async/await。
在 Odin 或 C 等系统语言中,解决此问题的理想方案是什么?
【问题讨论】:
-
所有这些都是有效的解决方案,“最佳”解决方案将取决于您的确切需求。这个问题真的不能简单回答
-
如果有一个理想的解决方案,就不会发明 async/await :) 这三个都是可行的解决方案,甚至是混合解决方案。
-
感谢您的快速cmets。我可能会错过任何第四种方式吗?
-
在做其他事情的一小部分时进行轮询,但这可能是你的 3 的一个特别肮脏的变体。
-
不要重新发明那个轮子,它会是方形的。 Libuv 很受欢迎。
标签: c multithreading async-await