Io Language学习:异步编程

迫不及待地介绍这个特性,来看一下Io是如何在不改变调用过程的情况下让调用变成异步的。

先看一个同步调用:

[code]
Slow := Object clone do(
call := method(i,
wait(i)
"DONE" println
i + 1
)
)

results := list(1,2,3) map(i,
Slow clone call(i)
)

results println
[/code]

这个程序将花上6秒来完成。如果调用本身消耗CPU比较少,就可以并行来运行。上面程序只要修改一行就可以了:
[code]
Slow clone @call(i)
[/code]
由于Io的库实现还很不完善,所以不是所有操作都可以顺利完成,比如把上面的wait(i)换成System system("sleep " .. (i asString))来调用外部程序,在linux上我测试就没有成功,Mac OS X上没有问题。

[color=red](注:后来修改了一下程序也测试成功了,看来Io里面有很多小陷阱,这当然是由于它现在还不完善造成的)[/color]
[color=red](注2:测试有点错误,测试结果还是不支持System system异步调用)[/color]

可以和Erlang比较一下,Erlang并行的能力也很强,但你不得不写许多代码来完成这种并行,而且并行写起来并不是很顺手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值