排他処理が不要というとこんなケースかな。
スレッドを生成する前に必要なデータを共有する変数にセット。
スレッド生成、処理開始。この間共有する変数は生成したスレッドからだけアクセス。
処理終了とJoin。その後共有する変数から結果を取得。
実際はスレッドの生成時と終了/Join時にメモリバリアが存在しているのだろうけど。