123456789101112131415161718192021222324252627282930313233 |
- #pragma once
- #include "Internal/Baselib_EnumSizeCheck.h"
- #ifdef __cplusplus
- BASELIB_C_INTERFACE
- {
- #endif
- // Can be used to control the wakeup behavior on platforms that don't support waking up a specific number of thread.
- // Syscalls don't come for free so you need to weigh the cost of doing multiple syscalls against the cost of having lots of context switches.
- //
- // There are however two easy cases.
- // * When you only want to notify one thread use Baselib_WakeupFallbackStrategy_OneByOne.
- // * When you want to wakeup all threads use Baselib_WakeupFallbackStrategy_All
- //
- // For the not so easy cases.
- // * Use Baselib_WakeupFallbackStrategy_OneByOne when wake count is low, or significantly lower than the number of waiting threads.
- // * Use Baselib_WakeupFallbackStrategy_All if wake count is high.
- typedef enum Baselib_WakeupFallbackStrategy
- {
- // Do one syscall for each waiting thread or notification.
- Baselib_WakeupFallbackStrategy_OneByOne,
- // Do a single syscall to wake all waiting threads.
- Baselib_WakeupFallbackStrategy_All,
- } Baselib_WakeupFallbackStrategy;
- BASELIB_ENUM_ENSURE_ABI_COMPATIBILITY(Baselib_WakeupFallbackStrategy);
- #ifdef __cplusplus
- } // BASELIB_C_INTERFACE
- #endif
|