このディレクトリの索引
#  
#  目標_1と目標_2を限界度数成功させる。
#  


目標_1と目標_2を限界度数成功させる(_限界度数,_目標_1,_目標_2) :-
        forall_n(_限界度数,_目標_1,_目標_2).

forall_n(_限界度数,_目標_1,_目標_2) :-
        message_queue_create(_キュー番号),
        (   thread_create(度数(_限界度数,_キュー番号),_,[]);
            forall((
                      thread_get_message(_キュー番号,_項),
                      (  _項 = 0,!,fail;call(_目標_1))),
                      call(_目標_2)).

度数(_限界度数,_キュー番号) :-
        between(1,_限界度数,_度数),
        _剰余 is _度数 mod ( _限界度数 + 1 ),
        thread_send_message(_キュー番号,_剰余),
        _度数 = _限界度数.