複数言語を使用する環境では、オペレーティング システムの機能によって直接作成されたスレッドと、START 文または CBL_THREAD_CREATE ルーチン以外で作成されたスレッドに対してはいくつかの制限と要件があります。
- これらのスレッドは、CBL_THREAD_n ルーチンの関数 (たとえば、CBL_THREAD_EXIT または CBL_THREAD_KILL) ではなく、オペレーティング システムの正当なスレッド終了方法で終了する必要があります。
- 作成されたスレッド ハンドルは常にデタッチされています。そのため、これらのスレッドは、WAIT 文または CBL_THREAD_WAIT ルーチンを使用して待機させることができません。 戻り値はありません。
- スレッドまたはアプリケーションのそれぞれで COBOL ランタイム システムのサービスが不要になった場合、スレッドは、cobthreadtidy() および cobtidy() を呼び出す必要があります。この呼び出しにより、ランタイム システムはメモリを解放し、スレッド状態の情報をクリアすることができます。.NET Framework を使用するマネージ アプリケーションの場合は、これらのルーチンは使用されません。「.NET Framework におけるマルチスレッド」を参照してください。
- cobtidy()、cobexit() または COBOL STOP RUN 文により、呼び出し側スレッドは「主」スレッドとして処理されます。その結果、ランタイム システムは、クリア処理の完了前に、CBL_THREAD_CREATE スレッドがすべて終了するのを待ちます。.NET Framework を使用するマネージ アプリケーションの場合は、これらのルーチンは使用されません。「.NET Framework におけるマルチスレッド」を参照してください。
注: ランタイム システムがサポートするすべてのマルチスレッド機能は、他言語スレッドで作成されたハンドルを検出し、使用状況が無効な場合に報告します。ただし、(上述したとおり) COBOL またはランタイム システム コードを実行したスレッドが終了する前に、このスレッド対するランタイム システムのリソースを解放するかどうかは、完全にアプリケーションに依存します。