18 PBOp(getwork_first_time,e)
20 while (BITMAP_same(GLOBAL_bm_present_workers,GLOBAL_bm_finished_workers));
21 make_root_choice_point();
24 PUT_IN_FINISHED(worker_id);
26 while (! BITMAP_same(GLOBAL_bm_present_workers,GLOBAL_bm_finished_workers));
27 PUT_OUT_ROOT_NODE(worker_id);
30 free_root_choice_point();
32 while (! BITMAP_empty(GLOBAL_bm_root_cp_workers));
35 PREG = GETWORK_FIRST_TIME;
46 if (DepFr_leader_cp(LOCAL_top_dep_fr) == Get_LOCAL_top_cp()) {
48 if (DepFr_leader_dep_is_on_stack(LOCAL_top_dep_fr)) {
51 LOCK_OR_FRAME(LOCAL_top_or_fr);
52 if (OrFr_alternative(LOCAL_top_or_fr) == NULL ||
53 (OrFr_alternative(LOCAL_top_or_fr) == ANSWER_RESOLUTION && B_FZ != Get_LOCAL_top_cp())) {
56 UNLOCK_OR_FRAME(LOCAL_top_or_fr);
61 PREG = OrFr_alternative(LOCAL_top_or_fr);
81 LOCK_OR_FRAME(LOCAL_top_or_fr);
82 if (OrFr_alternative(LOCAL_top_or_fr)) {
83 PREG = OrFr_alternative(LOCAL_top_or_fr);
87 UNLOCK_OR_FRAME(LOCAL_top_or_fr);
96 PBOp(getwork_seq,Otapl)
97 LOCK_OR_FRAME(LOCAL_top_or_fr);
98 if (OrFr_alternative(LOCAL_top_or_fr) &&
99 BITMAP_alone(OrFr_members(LOCAL_top_or_fr), worker_id)) {
100 PREG = OrFr_alternative(LOCAL_top_or_fr);
104 UNLOCK_OR_FRAME(LOCAL_top_or_fr);
105 SCHEDULER_GET_WORK();
113 PREG = NEXTOP(PREG,Otapl);