< 返回版块

chaoxi24 发表于 2021-01-22 03:21

请问怎么才能写出最接近多进程的异步多线程?主要问题是错误处理,相互影响。

我还是rust新手,对线程的理解还是基于python。python就没有完美的解决多线程方案。协程跑不满CPU,多进程加载又太慢。还有就是用过另外一些脚本语言,也没有完美的多线程方案。

那么,rust在多线程方面,是有可能实现那种快速加载,又像多进程那样互不影响,能跑满CPU的完美多线程吗?

评论区

写评论
Mike Tang 2021-02-23 22:27

是的,rust能完美达到你的心愿。

Ryan-Git 2021-02-23 21:18

python多进程是没办法。主流网络框架都是单进程多线程,nginx,netty,go。。。

neeemooobaby 2021-01-28 09:46

异步的目的是提高线程本身的资源利用率(使得线程blocking的场景变少) 针对的是IO密集的任务 每个await相当于是一个必须的等待(只不过原来阻塞线程 现在交给了eventloop) 如果是计算密集的 直接用thread就好了

Aya0wind 2021-01-22 08:29

现在异步网络编程就用async await,多线程可以由异步运行时提供。目前rust的tokio异步运行时使用任务队列+任务窃取,能很好的利用多核,速度也很快,可以去试试,你都不需要去手动调度线程,直接投递任务就行,调度器会自动分配任务至各个线程,而且会平均各个线程的负载。而且async await语法本质是一种无栈协程,开销非常低。

1 共 4 条评论, 1 页