スレッドの一時停止

多くのマルチスレッド アプリケーションでは、スレッドを終了せずに、「中断」するのは珍しいことではありません。たとえば、クライアント / サーバーアーキテクチャでは、主サービス スレッドが要求を見つけるために入力キューをポーリングする場合があります。要求が見つからない場合は、再度入力キューをポーリングする前に CPU を別のプロセスまたはスレッドに使用させます。これは、CBL_THREAD_YIELD を呼び出すことで簡単に行うことができます。CBL_THREAD_YIELD を呼び出すと、アプリケーションの別のスレッド (オペレーティング システムによっては、別プロセスの別のスレッド) に CPU を譲ります。

他に、スレッドが CPU の所有権を無期限に放棄し、何らかのイベントが確実に発生した場合のみに CPU を使用できます。CBL_THREAD_SUSPEND により、中断されたスレッドのスレッド ハンドルを使用して別のスレッドが CBL_THREAD_RESUME を呼び出すまで呼び出し元のスレッドを中断できます。スレッドは対象となるスレッドがそれ自身を中断する前に、CBL_THREAD_RESUME を 1 回以上呼び出せます。この場合には、CBL_THREAD_SUSPEND の呼び出しは呼び出し元のスレッドにすぐに戻り、CPU の所有権を放棄しません。この操作は、セマフォを数えるのに非常に似ています。作成者 / 使用者間の問題は、CBL_THREAD_SUSPEND と CBL_THREAD_RESUME ルーチンのみを使用すると解決します。