【发布时间】:2019-05-19 03:32:15
【问题描述】:
请提出更好的方法(更多的elixir方式)将以下C代码写入elixir。
int some_num = 0;
for(int i = 0; i < 100; i++){
for(int j = 0; j < 1000; j++){
for(int k = 0; k < 10000; k++){
some_num += 1;
}
}
}
printf("%d", some_num);
而是否可以通过获得好处elixir并发来实现?
编辑: 一点背景知识,我对长生不老药很新鲜,还在学习。这个问题的主要动机是编写更多惯用的灵丹妙药代码而不是应用并发。
【问题讨论】:
-
increment 是一个可以单独完成的操作——所以它不是 Elixir 用于的典型任务。但是您可以将每个内部循环划分为 4 个单独的 erlang/elixir 进程,并在每个进程完成时通过接收来自进程的消息来收集它们的结果。我说因为我的电脑有 4 个核心。 ymmv。
-
Elixir 中最先进的并发方法是采用 Flow 模块github.com/antonmi/flowex,但调整您的示例以使用它意味着首先将代码更改为更多 Elixir 惯用语。
-
@GavinBrelstaff:你指向了错误的Flow 库。
-
如果你能指出正确的 - 我找不到如何在不调用 mix 等的情况下使用 Flow 模块。
标签: elixir