首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行映射(生成器)运算符

并行映射(生成器)运算符
EN

Stack Overflow用户
提问于 2009-10-26 21:25:12
回答 2查看 154关注 0票数 0

我对为我的语言定义并行映射操作符很感兴趣。它在给定表达式的情况下将列表转换为新的列表。它将具有类似于生成器的语法。与C#和Python中的生成器不同,如果编译器需要,它可能会被并行计算(例如,有一个空闲的核心,并且列表非常大)。它将被称为witheach,以区别于按顺序执行的foreach

例如,考虑以下内容:

代码语言:javascript
复制
var f = function(int x) : int { return x * 2; }
var my_list = 0..1000000;
var my_mapped_list = witheach (i in mylist) yield f(i);

我的问题是,对于可能在f中带来副作用的程序员来说,这会不会太不直观?当然,我会说不要在文档中这样做,但大多数程序员并不阅读语言文档。:-)

我想更大的问题是,现代程序员能适应他们语言中的隐式并行列表处理语义吗,或者他们需要更明确的东西吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-26 21:30:08

您说得对,大多数用户不会阅读文档,因此可能会将非线程安全代码放在witheach块中(尤其是名称和语法与foreach非常相似的代码)。您要么必须信任您的用户,要么对该块的并发安全性执行一些静态分析。如果你选择了后者,那么你不妨不用witheach了--只要在可能的情况下自动并行化foreach即可。

至于用户是否准备好承担选择潜在危险的责任,我打赌是的,只要他们事先知道什么是安全的。许多语言每天都会迫使你做出这样的选择(指针、手动内存管理、共享内存并发)。你可能想让你的语法不那么模棱两可(也就是叫它parallelforeach),这样人们就知道他们注册的是什么。

票数 2
EN

Stack Overflow用户

发布于 2009-10-26 21:34:07

你的意思是像pmap这样的东西

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1624767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档