一時停止は、そのスレッドが自分自身で行う必要があります。「現在のスレッド」だけを停止できる、とも言えますね。関数には引数が1つあります。数字の単位は任意です。(「時間を扱う」のチュートリアルを見てね)ここで1つ特記事項!sleep()関数では、どんなスレッドでも一時停止できます。メインスレッドも、です。関数は「最も効率的な」一時停止の方法です。この方法でスレッドを眠らせている間は、CPU使用率がゼロになります。一時停止の時間はあくまで目安と考えてください。OSによって、誤差が出ます。数字通りの正確な待機時間になるとは期待しないでね!共有しているデータを保護する同じプログラム上で動いているスレッドたちは同じメモリを共有しています。どのスレッドも、プログラム内の変数にアクセスできます。1つの変数や関数が、複数のスレッドから同時にアクセスされるかもしれない。同時アクセスの結果がどうなるかはパルプンテです。(クラッシュしたり、あり得ないデータになったり)「排他制御」を行うと、共有データを保護してスレッドセーフにすることができます。考え方はどれも同じです。中でも「ミューテックス」が一番ポピュラーです。略)特定のコードを、同時に1つのスレッドからのみアクセスできるようにします。サンプルを見てみましょう。0;}上のサンプルでは、コンソールが「どのスレッドからもアクセスできる共有リソース」です(std::cout)。以前のサンプルでは、コンソール上でテキストの表示が混ざる、という結果になったのでした。これで、テキストが混ざらずに表示されるようになります。順を追って、処理を見ていきます。到達したスレッドが、ミューテックスのロックに成功します。その後のコードにアクセスして、テキストを出力します。そのスレッドはスリープ状態になります。第2のスレッドがスリープから目覚めて、ミューテックスのロックを行い、続く処理を実行します。このように、コンソール上にテキストが混ざることなく順番に表示されます。ミューテックスの他にも排他制御の方法はあります。ほとんどの場合はミューテックスで充分です。以外のライブラリに浮気してください。ミューテックスはすでにスレッドセーフです。保護してあげなくても大丈夫です。ミューテックスは「例外セーフ」ではないのでした!では、ミューテックスがロックされている間に例外が発生すると、一体どうなってしまうのか?ロックが解除されなくなってしまいます。永遠にロックされたまま。ミューテックスをロックしようとした他の全てのスレッドは、ブロックされたままになります。アプリケーションがフリーズします。クラスを用意しています(sf::Lock)。ミューテックスをラッピングすると、このクラスのコンストラクタが内部でミューテックスをロックしてくれます。デストラクタ内でロックを解除してくれます。