登录注册
论坛
一粒金砂(高级)
183
12
本章从匿名函数讲起。一个匿名函数,结构类似:
|参数列表|{函数体}
实现线程,要引入std的thread,然后用thread::spawn(匿名函数);来实现线程。如果线程中要使用生成线程的作用域的变量,需要在匿名参数列表前增加“move”。如果在线程中相把算力暂时释放出来,用thread::yield_now()。
需要注意的是,线程数超出物理内核数后,性能会下降:
10_03.png (29.34 KB, 下载次数: 0)
下载附件 保存到相册
2024-6-17 20:20 上传
扫一扫,分享给好友
五彩晶圆(高级)
6828
0
问题是线程数超出物理内核数后,性能为什么会下降
Jacktang 发表于 2024-6-20 07:24 问题是线程数超出物理内核数后,性能为什么会下降
我觉得可能是2个原因:一是测试环境关掉了超线程,这样每个核同一时刻只能跑1个线程;二是代码中使用了循环里调用thread::yiels_now而非了thread::sleep,这并不能让cpu给真的空出来给别的线程用。
7671
2
底层是操作系统线程,rust也是封装一层,线程太多了明显加重上下文交换和竞争成本。
默认摸鱼,再摸鱼。2022、9、28
发表回复 回帖后跳转到最后一页
EEWorld Datasheet 技术支持
查看 »