首页
学习资料
三维资料
资源下载
绘画资料
站长博文
站长图片
微信关注
微信
移动客户端
您当前的位置 :
首页
>
学习资料
>
RUST网络客户端的基本技术说明-协程
投稿邮箱:a@w1.hk
投稿QQ:305766661
RUST网络客户端的基本技术说明-协程
2023-02-13 00:38:44
来源:
作者:
责任编辑:cncml
一、协程
首先说明的是,Rust对协程的支持是一波三折,对RUST的相关技术还是了解的有所欠缺,所以对RUST认知是现在原生是不支持协程的。但可以通过一些库或者自己编写来实现协程。比较有名的TOKIO这个库。可以把其中的Task当作是协程。理解是理解,其实它不是协程,要明白这一点。
早先RUST有runtime机制和协程,后来大佬们觉得可能这玩意儿和RUST设计的初衷有所违背,所以就砍了。不服不行,真的。RUST原来有一个绿色线程,其实就是协程模型。
二、Rust对协程的支持
绿色线程,也可以按经典的协程的说法叫做用户态线程,Windows上叫作纤程。在c++2X以后,估计c++对协程的支持就进入了一个实用的阶段。不过真正在实际工程上应用,应该会滞后一到两年左右。毕竟IDE和相关的编译工具和调试工具的支持都需要时间。而Rust在经过反复的验证后发现至少在Rust上,协程的出现并没有带来应有的效果,或者用他们的话来说,协程和线程相比,没有优势,反而因为Rust的定位取代c++,导致和具体系统或者硬件打交道时很不方便。体现在表面上就是效率根本得不到提升。
同时,Rust对协程和本地线程的同时支持,导致了API的复杂化,同时一些具体的技术问题,比如segmented stack的无法匹配。另外,一些具体的问题也出现,比如TLS的局部存储问题。如果单纯是Rust本身是没有问题,但是一旦和c++等语言混全使用就会出现问题。
而如果解决这些问题,就势必要有一个强大的Runtime跟随着程序发布,而这恰恰又和Rust的初衷有背。其实还有不少的其它问题,这都是Rust最终把绿色线程从原生支持去除的主要原因。虽然Rust原生不支持,但不代表不可以不使用库,只要肯下成本,这个还是没有问题。
虽然是这样,还是需要介绍一下Rust中绿色线程实现的基本机制,从资料上可以看到,Rust实现协程使用的是汇编来实现的,这个和前面协程实现的机制可以对应一下就明白了。从segmented stack到后来的自身有一个栈,可以看得出Rust的协程是一个有栈协程。估计这也是最终放弃协程的一个原因,维护一个栈,对于一个新语言来说,还是有一定的成本的。特别是对于这种Gcc标准文档上都写的语焉不详的东西,对Rust的开发和维护者来说一定不是一个好梦。
所以说,RUST大佬们搞掉协程,这个魄力还是真得值得学习的!
三、总结
有没有协程,是一个语言是不是可以把多线程(或多进程)编程难度降低几个量级的一个特点,在这一点上,RUST的大佬们走了另外一条清奇的风范之路。现在不敢说这种方式是好是坏,还是那句话,让时间来检验它吧。
文章来源:
责任编辑:cncml
更多
学习资料
02-27
rust中String,&str,Vec <u8>和&[u8]的惯用转换
02-13
Rust的并发编程(三)协程并发
02-13
RUST网络客户端的基本技术说明-协程
02-13
无栈协程 | Rust学习笔记
精彩推荐
新测试2011
视口照明和阴影『原创』
3ds max卡通(墨水)材质ink'n Pain(原创)
3ds max卡通(墨水)材质ink\'n Pain(原创)...
详细》
没事做着玩的『原创』
vray下怎样使用max的 批量渲染『原创』
19-三维老资料分享(二)
实现php间隔一段时间执行一次某段代码
19-三维老资料分享(五)
19-三维老资料分享(四)
19-三维老资料分享(三)
模拟蜡烛 并虚拟照度范围的测试
绘画资料
手绘原画动漫资源 Ⅰ 2012.10.17
手绘原画动漫资源 Ⅱ 2012.10.17
手绘原画动漫资源 Ⅲ 2012.10.17
手绘原画动漫资源 Ⅳ 2012.10.17
手绘游戏原画Ⅰ
手绘游戏原画Ⅱ
手绘游戏原画Ⅲ
手绘游戏原画Ⅳ
手绘游戏原画Ⅴ
德国素描精选
手绘的光照分析
《最后的晚餐》卡通原画 高清版
版权声明:
1、本主题所有言论和图片纯属会员个人意见,与本网站立场无关
2、本站所有主题由该文章作者发表,该文章作者与
享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和
的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、
管理员和版主有权不事先通知发贴者而删除本文
精彩置顶
新测试2011
视口照明和阴影『原创』
3Ds max _vray1.50打造真实3D动画手绘原画效果『原创』
3ds max卡通(墨水)材质ink'n Pain(原创)
没事做着玩的『原创』
vray下怎样使用max的 批量渲染『原创』
07年巴西渲染器
三维资源(一)
三维资源(二)
三维资源(三)
2013老三维资源
bc 三维资源
lt-三维老资料分享(一)
lt-三维老资料分享(二)
19-三维老资料分享(一)
绘画资料
手绘原画动漫资源 Ⅰ 2012.10.17
手绘原画动漫资源 Ⅱ 2012.10.17
手绘原画动漫资源 Ⅲ 2012.10.17
手绘原画动漫资源 Ⅳ 2012.10.17
手绘游戏原画Ⅰ
手绘游戏原画Ⅱ
手绘游戏原画Ⅲ
手绘游戏原画Ⅳ
手绘游戏原画Ⅴ
德国素描精选
手绘的光照分析
《最后的晚餐》卡通原画 高清版
独家推荐
新测试2011
视口照明和阴影『原创』
3Ds max _vray1.50打造真实3D动画手绘原画效果『原创』
3ds max卡通(墨水)材质ink'n Pain(原创)
没事做着玩的『原创』
vray下怎样使用max的 批量渲染『原创』
19-三维老资料分享(二)
模拟蜡烛 并虚拟照度范围的测试
手绘2013.3.09未完待续
视频
maya海景模拟
关于渲染和灯光的一些理论研究
简单分析日光散射【手稿-原创-未完】
Max中的文件管理教程【1o0o年殺.原创】
雪景模拟
软件推荐
Windows Media Player 11
千千静听 5.1.0 简体中文版
腾讯QQ2008 贺岁版
快车FlashGet 2.0 简体中文版
罗技G500s G700s G400s 驱动下载 x64位 x86 32位
不良信息举报信箱
新闻热线:18733599993 技术服务:18733599993
网上投稿
关于本站
|
广告服务
|
免责申明
|
招聘信息
|
联系我们
在线网
版权所有 Copyright(C)2005-2025