Функция CallbackMayRunLong (threadpoolapiset.h)

Указывает, что обратный вызов может вернуться не быстро.

Синтаксис

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

Параметры

[in, out] pci

Указатель на структуру TP_CALLBACK_INSTANCE , которая определяет экземпляр обратного вызова. Указатель передается в функцию обратного вызова.

Возвращаемое значение

Функция возвращает значение TRUE, если другой поток в пуле потоков доступен для обработки обратных вызовов или пулу потоков удалось создать новый поток. В этом случае текущая функция обратного вызова может использовать текущий поток бесконечно.

Функция возвращает значение FALSE, если другой поток в пуле потоков недоступен для обработки обратных вызовов и пулу потоков не удалось создать новый поток. Пул потоков попытается создать новый поток после задержки, но если текущая функция обратного вызова выполняется долго, пул потоков может потерять эффективность.

Комментарии

Пул потоков может использовать эти сведения для более эффективного определения времени создания нового потока.

Функция CallbackMayRunLong должна вызываться только потоком, обрабатывающим обратный вызов. Вызов этой функции из другого потока может вызвать состояние гонки.

Функция CallbackMayRunLong всегда помечает обратный вызов как длительный, независимо от того, доступен ли поток для обработки обратных вызовов или пул потоков может выделить новый поток. Поэтому эту функцию следует вызывать только один раз, даже если она возвращает значение FALSE.

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0600 или выше.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header threadpoolapiset.h (включает Windows.h в Windows 7, Windows Server 2008 Windows Server 2008 R2)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

DisassociateCurrentThreadFromCallback

FreeLibraryWhenCallbackReturns

LeaveCriticalSectionWhenCallbackReturns

ReleaseMutexWhenCallbackReturns

ReleaseSemaphoreWhenCallbackReturns

SetEventWhenCallbackReturns

SetThreadpoolCallbackRunsLong

Пулы потоков

TrySubmitThreadpoolCallback