43 lines
854 B
Plaintext
43 lines
854 B
Plaintext
--
|
|
-- demo\rosetta\Generator_Exponential.exw
|
|
-- ======================================
|
|
--
|
|
bool terminate = false
|
|
|
|
atom res
|
|
|
|
procedure powers(integer p)
|
|
integer i=0
|
|
while not terminate do
|
|
res = power(i,p)
|
|
task_suspend(task_self())
|
|
task_yield()
|
|
i += 1
|
|
end while
|
|
end procedure
|
|
|
|
constant squares = task_create(routine_id("powers"),{2}),
|
|
cubes = task_create(routine_id("powers"),{3})
|
|
|
|
atom square, cube
|
|
task_schedule(cubes,1)
|
|
task_yield()
|
|
cube = res
|
|
for i=1 to 30 do
|
|
while 1 do
|
|
task_schedule(squares,1)
|
|
task_yield()
|
|
square = res
|
|
while cube<square do
|
|
task_schedule(cubes,1)
|
|
task_yield()
|
|
cube = res
|
|
end while
|
|
if square!=cube then exit end if
|
|
end while
|
|
if i>20 then
|
|
?square
|
|
end if
|
|
end for
|
|
terminate = 1
|