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 をさらに操作するよりも、行番号に何を書く必要がありますか。3 を指定して、両方の fork 呼び出しの実行が完了した後に 4 行目が実行されるようにします。3行目で結界として機能する文言が欲しいです。両方の fork 呼び出しは相互に独立しています。[H1|T1] リストを別の変数にコピーして、[H1|T1] の代わりに 2 行目に渡してみました。

4

1 に答える 1

0

SWI-Prolog では、スレッドを使用して join で同期できます。

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 に答える