我正在尝试同时使用代理回调。不幸的是,无论我做什么,它总是似乎顺序而不是并行运行。 (没有代理人没有)
主类(APPLICATION):
…
代理程序对象保留对目标的引用,在您的示例中为类型的根对象 APPLICAITON 所以所有的电话都是 print_hello 得到同步。为避免这种情况,调用代理的对象应记录在a中 COUNTER 对象并从那里使用。
APPLICAITON
print_hello
COUNTER
这可以通过添加属性来实现 action 上课 COUNTER 并更新其创建过程
action
make (i: INTEGER; delay: INTEGER; a: separate PROCEDURE) do id := i delay_time := delay action := a end ... action: separate PROCEDURE
然后而不是 p.call 在 COUNTER.run 将使用以下代码(该功能 run 没有争论 p 了):
p.call
COUNTER.run
run
p
separate action as p do p.call end
现在 p 进入该功能时未锁定 run 因此,回调可以由不同的处理器交替执行。