このディレクトリの索引

スレッドとメッセージキューを使って全解を収集する(_選択項,_副目標,_回収値ならび) :- message_queue_create(_キュー番号), スレッドとメッセージキューを使って全解を収集する(_キュー番号,_選択項,_副目標,_回収値ならび), message_queue_destroy(_キュー番号). スレッドとメッセージキューを使って全解を収集する(_キュー番号,_選択項,_副目標,_回収値ならび) :- thread_create('スレッドで副目標を実行し、実行結果をメッセージキューに送付する'(_キュー番号,_選択項,_副目標),_,[]), メッセージを回収する(_キュー番号,_回収値ならび). 'スレッドで副目標を実行し、実行結果をメッセージキューに送付する'(_キュー番号,_選択項,_副目標) :- forall('スレッドで副目標を実行し、'(_副目標),実行結果をメッセージキューに送付する(_キュー番号,_選択項)). 'スレッドで副目標を実行し、実行結果をメッセージキューに送付する'(_キュー番号,_,_) :- thread_send_message(_キュー番号,end_of_file). 'スレッドで副目標を実行し、'(_副目標) :- call(_副目標). 実行結果をメッセージキューに送付する(_キュー番号,_選択項) :- '実行結果は項であるが、これをメッセージとして送付するために文字列に変換する'(_選択項,_選択項文字列), メッセージキューに送付する(_キュー番号,_選択項文字列). '実行結果は項であるが、これをメッセージとして送付するために文字列に変換する'(_選択項,_選択項文字列) :- swritef(_選択項文字列,'%t',[_選択項]). メッセージキューに送付する(_キュー番号,_選択項文字列) :- thread_send_message(_キュー番号,_選択項文字列). メッセージを回収する(_キュー番号,_項ならび) :- findall(_項,( メッセージを確実に得る(_キュー番号,_メッセージ), ( _メッセージ = end_of_file,!,fail; 文字列であるメッセージから項を得る(_メッセージ,_項))),_項ならび). 文字列であるメッセージから項を得る(_メッセージ,_項) :- read_term_from_atom(_メッセージ,_項,[]). メッセージを確実に得る(_キュー番号,_メッセージ) :- repeat, メッセージを確実に(_キュー番号), 得る(_キュー番号,_メッセージ). メッセージを確実に(_キュー番号) :- thread_peek_message(_キュー番号,_). 得る(_キュー番号,_メッセージ) :- thread_get_message(_キュー番号,_メッセージ).