rust线程沲

1.背景

如果在rust中使用线程沲,因rust自身没有ThreadPool,需要使用第三方库;例如:知名的rayon

2.解决方案

在Cargo.toml中添加rayon的配置,最新版本为1.8

1
2
[dependencies]
rayon = "1.8.0"

3.使用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use rayon::prelude::*;
pub fn thread_pool_test() {

	let mut  v = Box::new(Vec::new());
    //注意别越界了
	let v_size: u64 = 10000000;
	v.reserve(v_size.try_into().unwrap());
	for i in 0..v_size  {
		v.push(i);
	}

	let sum:  u64 = v.into_par_iter().map(|i| {
			i
		})
		.sum();

	println!("v sum:{}", sum);
}

4.效果

1
v sum:49999995000000