环球-Futures-Rust-探求-异步编程 (环球扶梯乘完需要约几分钟)
当天,咱们来讨论中的异步编程和Futures。Rust的异步编程是一个弱小的个性,它准许开发者编写非阻塞的、高性能的运行程序。让咱们一同深化了解这一律念及其在Rust中的运行。
Rust中的异步编程
异步编程是一种让程序在等候一个长期间操作(如I/O)成功时能够继续口头其余义务的编程形式。在Rust中,异步编程是经过关键字和特质成功的。
1.关键字
2.特质
成功异步编程
示例代码:异步函数和.await
hello_world
函数是一个异步函数,它立刻前往一个Future。当调用时,它会暂停以后义务,直到Future成功。
Futures和义务调度
失误处置
示例:异步失误处置
论断
Rust编程语言里的B树map
rust编程语言里的btreemap 和HashMap不同HashMap的数据顺序是不确定的 当你运行同一段 初始化HashMap的代码 然后打印输出元素的顺序是不同的btreemap的数据是按键排序好了的 它是基于B树创建出来的目前支持少量数据创建btreemap 它用线性查询 性能比较高它实现了ord特性 可以用来比较 取最大最小值 所以按照范围查询数据 效率也高rust里的btreemap提供了 和HashMap类似一致的方法可以像HashMap一样 new一个btreemap 然后insert一键值对还可以用from函数 从数组创建btreemap想要获取一个数据时 可以用get方法传入键 返回option包装的值可以用索引的方式 给btreemap传入一个键 会直接得到值 如果键不存在 会报错 所有这种方式取值需先判断和HashMap类似 可以用entry方法 存入键值对它也有一些HashMap没有的方法 pop_first可以删除第一个键值对 并返回option包装的这个数据 这个键是最小的last_key_value返回最后的 最大键的option包装的键值对 last_entry方法返回和上面方法一样 只不过是entry包装键值pop_last方法删除并返回 最后一个用option包装的元素append方法可以用来 合并两个btreemaprange方法可以用来 取一段键范围的数据
Rust编程语言里的future
在异步编程里 future代表一个异步计算 它的表示形式就是 在函数前面加上async标签那么通过await可以等待 运行时的任务去执行future future背后有poll方法 可以查询future结果 一开始还没输入参数 也就是没执行的时候 自然没有结果 返回的是pending状态 同时poll的上下文中的唤醒器 会被拷贝一份到poll里一旦future就绪 poll里的唤醒器 来唤醒wake方法就是 通知运行时这个future 可以执行了 来个任务来执行future吧 如果运行结束就返回结果 没有结束就返回pending状态 还可以继续poll查询状态 但是只有最近一次的poll的唤醒器 会被通知去执行可见调用future的时候 它是惰性的 它本身不会去执行 它依赖唤醒器的wake方法 去通知有进度了 poll就获取结果 这就避免了无限 循环的去查询future其它编程语言里的异步是怎么运行的你,你知道吗,欢迎交流
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。