对Postmaster 中 bufmgr.c 的 BgBufferSync.c 中静态变量的学习理解---saved_info_valid

开始

bool                    
BgBufferSync(void)                    
{                    
    ……                
                    
    /*                
     * Information saved between calls so we can determine the strategy                
     * point's advance rate and avoid scanning already-cleaned buffers.                
     */                
    static           bool       saved_info_valid = false;                
    static           int        prev_strategy_buf_id;        
    static          uint32         prev_strategy_passes;        
    static          int        next_to_clean;        
    static     uint32     next_passes;        
                    
                    
    /* Moving averages of allocation rate and clean-buffer density */                
    static     float     smoothed_alloc = 0;        
    static     float     smoothed_density = 10.0;        
                    
    ……                
                    
    /*                
     * If we're not running the LRU scan, just stop after doing the stats                
     * stuff.  We mark the saved state invalid so that we can recover sanely                
     * if LRU scan is turned back on later.                
     */                
    if (bgwriter_lru_maxpages <= 0)                
    {                
        saved_info_valid = false;            
        return true;            
    }                
                    
    if (saved_info_valid)                
    {                
        ……            
    }                
    else                
    {                
        ……            
    }                
                    
    /* Update saved info for next time */                
    prev_strategy_buf_id = strategy_buf_id;                
    prev_strategy_passes = strategy_passes;                
    saved_info_valid = true;                
                    
    ……                
    /* Return true if OK to hibernate */                
    return (bufs_to_lap == 0 && recent_alloc == 0);                
}                    

一开始 :saved_info_valid 是 false的。

运行一次后,就会变成 true。(bgwriter_lru_maxpages <=0 的情形除外)

结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值