equal
deleted
inserted
replaced
452 | (SOME work, deps') => SOME (work, deps')); |
452 | (SOME work, deps') => SOME (work, deps')); |
453 |
453 |
454 fun execute_work NONE = () |
454 fun execute_work NONE = () |
455 | execute_work (SOME (work, deps')) = (worker_joining (fn () => execute work); join_work deps') |
455 | execute_work (SOME (work, deps')) = (worker_joining (fn () => execute work); join_work deps') |
456 and join_work deps = |
456 and join_work deps = |
457 execute_work (SYNCHRONIZED "join" (fn () => join_next deps)); |
457 Multithreading.with_attributes Multithreading.no_interrupts |
|
458 (fn _ => execute_work (SYNCHRONIZED "join" (fn () => join_next deps))); |
458 |
459 |
459 in |
460 in |
460 |
461 |
461 fun join_results xs = |
462 fun join_results xs = |
462 let |
463 let |