Ok. Now that I've actually done some work toward getting it to work with Suspend2, I'll give a more cogent response to Christoph's approach. I believe it can work, but the algorithm in freeze() is a bit of a concern. Checking whether the todo list is empty is fine while we're the only user, but when other functionality is using this, it will be unreliable. We'll either need a quick way to check what todo work is pending for a task (traverse list would be racy). We can't say "We know we signalled them all already" because more might have forked. One possibility might be to leverage the existing counting - when num_signalled = num_frozen, we can signal a new batch with impunity. But this assumes everything signalled properly enters the fridge (which might not always be guaranteed). Perhaps it's best to keep PF_FREEZING? Perhaps there's another possibility. Regards, Nigel -- Evolution. Enumerate the requirements. Consider the interdependencies. Calculate the probabilities.