0、思考
线程a负责发红包,线程b、c负责抢红包,线程a不会主动告诉b要发红包了,那线程b有什么策略?
1、相关api
CreateWaitableTimer
SetWaitableTimer
CancelWaitableTimer
OpenWaitableTimer
WaitForSingleObject
WaitForMultipleObject
CloseHandle
GetLocalTime
GetSystemTime
SystemTimeToFileTime
LocalFileTimeToFileTime
2、写在前面
等待定时器:在某个指定的时间触发或每隔一段时间触发一次。
3、api说明
// 创建可等待的定时器(在某个时间或间隔时间发出信号通知的内核对象)
// lpTimerAttributes:安全属性。(通常为NULL)
// bManualReset:手动重置(true),被触发时正在等待的所有线程变成可调度状态;自动重置(false),被触发时只有一个正在等待该计时器的线程
变成可调度线程。(通常为false)
// lpTimerName:内核对象名称。
WINBASEAPI
__out_opt
HANDLE
WINAPI
CreateWaitableTimerA(
__in_opt LPSECURITY_ATTRIBUTES lpTimerAttributes,
__in BOOL bManualReset,
__in_opt LPCSTR lpTimerName
);
WINBASEAPI
__out_opt
HANDLE
WINAPI
CreateWaitableTimerW(
__in_opt LPSECURITY_ATTRIBUTES lpTimerAttributes,
__in BOOL bManualReset,
__in_opt LPCWSTR lpTimerName
);
#ifdef UNICODE
#define CreateWaitableTimer CreateWaitableTimerW
#else
#define CreateWaitableTimer CreateWaitableTimerA
#endif // !UNICODE
// 设置触发定时器
// hTimer:要触发的定时器句柄
// lpDueTimeÿ