我正在Rust编写一个线程程序。
Go有一个环境变量GOMAXPROCS
,Go编译器使用它来在执行期间使用最大数量的处理器内核。经过多次搜索后,我找到了RTRACEMAXPROCS
参数here,但我找不到任何相关文档。
RTRACEMAXPROCS
参数与Rust的GOMAXPROCS
相同吗?
在单个过程中使用超过800K线程或者我应该使用多个进程是一种好习惯吗?
答案 0 :(得分:3)
Rust不再拥有绿色线程了。每个"任务"你将地图生成到一个真正的操作系统线程(这就是为什么任务术语完全不受欢迎)。相当于GOMAXPROCS
没有意义。
至于问题的第二部分:800K线程是荒谬的。它可能会起作用,但不要指望它能够像Go或Erlang的绿色线程那样工作。特别是,每个线程保留几兆字节的地址空间和至少 4 KiB物理内存,加上操作系统需要的任何资源(不是很多,我已被告知) 。 "为每件小事生成并发工作者"范式得不到很好的支持。
答案 1 :(得分:0)
从查看源RTRACEMAXPROCS
的代码实际上并不是Rust的一部分,而是示例中使用的程序。
作者只是使用该环境变量来创建指定大小的线程池。
如此简短的回答是否,RTRACEMAXPROCS
和GOMAXPROCS
不是一回事。