次の方法で共有


CallbackMayRunLong 関数 (threadpoolapiset.h)

コールバックがすぐに戻らない可能性があることを示します。

構文

BOOL CallbackMayRunLong(
  [in, out] PTP_CALLBACK_INSTANCE pci
);

パラメーター

[in, out] pci

コールバック インスタンスを定義する TP_CALLBACK_INSTANCE 構造体へのポインター。 ポインターはコールバック関数に渡されます。

戻り値

スレッド プール内の別のスレッドがコールバックの処理に使用できる場合、またはスレッド プールが新しいスレッドを作成できた場合、関数は TRUE を返します。 この場合、現在のコールバック関数は、現在のスレッドを無期限に使用できます。

コールバックを処理するためにスレッド プール内の別のスレッドが使用できず、スレッド プールが新しいスレッドを作成できなかった場合、関数は FALSE を返します。 スレッド プールは遅延後に新しいスレッドの作成を試みますが、現在のコールバック関数が長時間実行されると、スレッド プールの効率が低下する可能性があります。

注釈

スレッド プールでは、この情報を使用して、新しいスレッドを作成するタイミングをより適切に判断できます。

CallbackMayRunLong 関数は、コールバックを処理しているスレッドによってのみ呼び出す必要があります。 別のスレッドからこの関数を呼び出すと、競合状態が発生する可能性があります。

CallbackMayRunLong 関数は、コールバックを処理するためにスレッドを使用できるかどうか、またはスレッドプールが新しいスレッドを割り当てることができるかどうかに関係なく、コールバックを常に実行時間の長いものとしてマークします。 したがって、この関数は FALSE を返す場合でも、1 回だけ呼び出す必要があります。

この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNTを 0x0600 以上として定義します。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー threadpoolapiset.h (Windows 7、Windows Server 2008 Windows Server 2008 R2 の場合は Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

DisassociateCurrentThreadFromCallback

FreeLibraryWhenCallbackReturns

LeaveCriticalSectionWhenCallbackReturns

ReleaseMutexWhenCallbackReturns

ReleaseSemaphoreWhenCallbackReturns

SetEventWhenCallbackReturns

SetThreadpoolCallbackRunsLong

スレッド プール

TrySubmitThreadpoolCallback