リソース(この場合cout)に対する排他は基本的に使う側が決めることだろ。
それとコードの中身が 再入可能(reentrant) であるということは別問題。

cout をいつからいつまで使うかを決めるのは設計者の仕事ってことだよ。