bind 定时器

本文详细介绍了BIND中定时器的实现,包括数据结构如timermgr的内存分配器、互斥锁和小根堆,以及定时器管理器的创建、调度和销毁过程。定时器分为ticker、once、limited和inactive四种类型,用于执行定时任务,如interface_timer、heartbeat_timer和pps_timer。文章还阐述了如何通过isc_timer_reset、isc_timer_create和isc_event_allocate等函数进行管理。
摘要由CSDN通过智能技术生成

概述

BIND中有一些操作是定时任务,server.c的run_server函数中创建了三个定时任务,分别执行interface_timer_tick、heartbeat_timer_tickpps_timer_tick;其他模块中还有很多时间任务。定时器的实现文件时timer.h和timer.c,位于lib/isc目录下。

数据结构

struct isc_timermgr {
    /* Not locked. */
    unsigned int            magic;
    isc_mem_t *         mctx;
    isc_mutex_t         lock;
    /* Locked by manager lock. */
    isc_boolean_t           done;
    LIST(isc_timer_t)       timers;
    unsigned int            nscheduled;
    isc_time_t          due;
#ifdef ISC_PLATFORM_USETHREADS
    isc_condition_t         wakeup;
    isc_thread_t            thread;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值