Вам нужна некоторая форма конструкции взаимного исключения (например, блокировка), чтобы предотвратить смешивание вывода несколькими потоками - получить блокировку перед вызовом cout
и освободить ее после.Я не знаком с Cilk, но у него должны быть конструкции для этого.
Так как вы сказали, что просто играете, это должно работать нормально, но в противном случае блокировки стоят дорого, и их вообще следует избегать.В приложениях с реальными словами отдельные потоки обычно ничего не «печатают» - они в основном выполняют вычисления на независимых наборах данных - и, следовательно, описанная вами проблема не возникает.