/* $OpenXM: OpenXM/doc/Papers/job-pool.asir,v 1.1 2000/05/13 08:09:51 takayama Exp $ */ /* For ohp-metro.tex */ #define SM_popCMO 262 def pool() { P = [ox_launch(), ox_launch(), ox_launch()]; map(ox_push_cmo,P,0); map(ox_push_cmd,P,SM_popCMO); /* map(ox_get,P); mistake */ I = 50; Jobs = [x^(I)-y^(I),x^(I+1)-y^(I+1),x^(I+2)-y^(I+2),x^(I+3)-y^(I+3), x^(I+4)-y^(I+4),x^(I+5)-y^(I+5)]; N = length(Jobs); Ans = [ ]; print("------ started -----"); /* while (length(Jobs) != 0) { mistake */ while (length(Ans) != N) { Q = ox_select(P)[0]; F = ox_get(Q); /* print([Q,F]); */ if (F != 0) { Ans = append(Ans,[F]); print(Q); } if (length(Jobs) > 0) { Job = car(Jobs); Jobs=cdr(Jobs); ox_rpc(Q,"fctr",Job); ox_push_cmd(Q,SM_popCMO); } } return(Ans); } #define SM_executeFunction 269 def ex1() { P = ox_launch(); ox_push_cmo(P,13); ox_push_cmo(P,8); ox_push_cmo(P,ntoint32(2)); ox_push_cmo(P,"igcd"); ox_push_cmd(P,SM_executeFunction); return(ox_pop_cmo(P)); } /* ox_execute_string(P,"igcd(13,8);"); ox_rpc(P,"igcd",13,8); */ def ex2() { P = ox_launch(); Ans = [ ]; for (I=0; I<1.0; I=I+0.1) { /* ox_execute_string(P,"pari(dilog,0.3);"); */ ox_execute_string(P,"pari(dilog,"+rtostr(I)+");"); Ans = append(Ans,[ox_pop_local(P)]); } return(Ans); } end$