他のスレッドに実行を切り替えるyield()関数ですが、たまたま実装を覗いてみたところ、Boost.ThreadのWindows実装では以下のようになっていました。 // libs/thread/src/win32/thread.cpp void yield() { Sleep(0); } 0秒スリープでした。シンプル。 .NET FrameworkのSystem.Threading.Thread.Yield()メソッドはbool値でスレッドが切り替えられたかどうかを返すようなので、そういうのが必要な場合はどう実装するんだろうと調べてみたら、そういう場合にはSwitchToThread()関数を使えばいいようです。この関数は、準備ができている他のスレッドに切り替えができたらTRUE、そうでなければFALSEを返します。