我有一个MyReader实现Iterator并生成Buffers的地方Buffer : Send.很快就会MyReader生成很多东西Buffer,但我有一个CPU密集型的工作要对每个Buffer(.map(|buf| ...))这是我的瓶颈,然后收集结果(有序).我希望将CPU密集型工作并行化 - 希望能够使用工作窃取来执行它们,以及核心数量允许的速度.
编辑:更准确.我正在努力rdedup.MyStruct是Chunker哪些读取io::Read(通常是stdio),查找数据的部分(块)并产生它们.然后map()假设,对于每个块,计算它的sha256摘要,压缩,加密,保存并返回摘要作为结果map(...).已保存数据的摘要用于构建index数据.正在处理的块之间的顺序map(...)无关紧要,但是从每个块 返回的摘要map(...)需要以与找到块相同的顺序收集.实际save到文件步骤被卸载到另一个线程(写入线程).有问题的PR的实际代码
我希望我可以使用rayon它,但rayon期望一个已经可以并行的迭代器 - 例如.一个Vec<...>或类似的东西.我发现没有办法得到一个par_iter从MyReader-我的读者是非常单线程的性质.
有simple_parallel,但文件说,它不推荐用于一般用途.我想确保一切都能正常运作.
我可以采用spmc队列实现和自定义thread_pool,但我正在寻找经过优化和测试的现有解决方案.
还有pipeliner但不支持有序地图.
对于我的C项目,我想使用基于大括号的配置文件,例如:
account {
name = "test@test.com";
password = "test";
autoconnect = true;
}
Run Code Online (Sandbox Code Playgroud)
等或某些变化.
我正在尝试找到一些不错的C库来满足我的需求.你能给些建议么?
我有:
struct Id;
struct Url;
struct IdAndUrl {
id: Id,
url: Url,
}
Run Code Online (Sandbox Code Playgroud)
我希望能够IdAndUrl在我需要的地方使用Id.消除我可以使用的噪音impl Deref<Id> for IdAndUrl.
这是一个很好的做法/惯用语吗?
我在终端,我cd <projectdirectory>.如何打开位于fn main()此项目的Vim .
我不需要一个现成的解决方案:想法会有所帮助.我可以使用Vim racer来启动时自动跳转到符号吗?