0

代码块如下..

1.fork(sort_zero([H1|T1],[H2|T2],HY,0)),
2.fork(sort_zero([H1|T1],[H3|T3],HZ,0)),
3.
4.set_zero(HY,HZ,HZ2,1),

在上面的代码中,我得到了操纵列表 HY 和 HZ,然后我进一步使用列表 HY 和 HZ,我应该在第 1 行写什么。3 以确保在完成两个 fork 调用后执行第 4 行。我想要一个在第 3 行作为屏障的状态。两个分叉调用是相互独立的。我还尝试将 [H1|T1] 列表复制到另一个变量中,并在第 2 行而不是 [H1|T1] 中传递它。

4

1 回答 1

0

在 SWI-Prolog 中,您可以使用线程并将它们与连接同步:

thread_create( (sort_zero([H1|T1],[H2|T2],HY,0), thread_exit(HY)), IdY, []),
thread_create( (sort_zero([H1|T1],[H3|T3],HZ,0), thread_exit(HZ)), IdZ, []),
thread_join(IdY, exited(HY)),
thread_join(IdZ, exited(HZ)),
set_zero(HY,HZ,HZ2,1),
...
于 2012-11-21T13:18:06.500 回答