Killing spawned functions

Killing spawned functions

Is it possible for a parent function to kill or cancel all its spawned functions?

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

This is speculative computing. Cilk++ doesn't have builtin support for speculation because it is non-deterministic. I.e., it makes it difficult to reason about the correctness of code. Thus, Cilkscreen would not necessarily report races when they exist, and Cilkview's output would be irrelevant.

You can, however, implement speculation, yourself, if you don't mind the above limitations. E.g.,

void bar (volatile int *abort_parallelism) {
while (!*abort_parallelism) {
if (do_work() == meets_some_aborting_condition) *abort_parallelism = 1;
}
}

void foo () {
volatile int abort_parallelism = 0;
cilk_spawn bar(&abort_parallelism);
bar(&abort_parallelism);
cilk_sync;
}

Leave a Comment

Please sign in to add a comment. Not a member? Join today