mysql源码-os_event_t 事件机制解析
在linux 平台下
实现原理
方法 pthread_mutex_lock pthread_cond_wait pthread_cond_broadcast
变量 pthread_mutex_t pthread_condattr_t 来实现的
实现过程
log.checkpointer_event 是创建一个事件的举例
创建事件的变量
log.checkpointer_event = os_event_create(“log_checkpointer_event”);
即初始化条件变量与mutex 变量
ret = pthread_cond_init(&cond_var, &cond_attr);
wait 等待
有超时事件的等待
os_event_wait_time_low(log.checkpointer_event, 10 * 1000, sig_count);
无超时事件的等待
os_event_wait_low(log.checkpointer_event, sig_count);
即调用pthread_cond_wait
事件激活
os_event_set(log.checkpointer_event);
即调用 ret = pthread_cond_broadcast(&cond_var);
事件初始化
const auto sig_count = os_event_reset(log.checkpointer_event);