Задействовать сигналы для связи между потоками кажется избыточным. В этом случае я бы использовал ожидание на condition variable.
condition_variable::wait
и condition_variable::notify_one
работают? Да даже этот интерфейс изоморфен WaitForSingleObject/SetEvent.
Конкретно в этом примере использование атомиков в сочетании с yieldом для синхронизации потоков будет самым дешевым, на мой взгляд
prec is an integer in the range [1, MAX_PREC] that sets the precision for arithmetic operations in the context.