zoukankan      html  css  js  c++  java
  • 对ListenSocket 的研究(三)

    磨砺技术珠矶,践行数据之道,追求卓越价值  

    回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页

    [作者:高健@博客园 luckyjackgao@gmail.com]

    接着 ListenSocket的研究(二) 一文,进一步进行分析,改动postmaster.c的ServerLoop函数代码如下:

    if (selres > 0)                                            
    {                                            
        int    i;                              
        for (i = 0; i < MAXLISTEN; i++)                                        
        {                                        
            if (ListenSocket[i] == PGINVALID_SOCKET)
                break;                          
            if (FD_ISSET(ListenSocket[i], &rmask))                                    
            {                                    
                fprintf(stderr, 
            "In ServerLoop, ListenSocket[%d] is dealed ok by FD_ISSET.\n", i); Port *port; port = ConnCreate(ListenSocket[i]); if (port) { BackendStartup(port); StreamClose(port->sock); ConnFree(port); } /*added by gaojian begin*/ }else{ fprintf(stderr,
            "ListenSocket[%d] is dealed by FD_ISSET
              with failed result.\n
    ", i); /*added by gaojian end*/ } } }

    启动服务器端后,显示信息:

    ListenSocket[0]:3
    ListenSocket[1]:4

    然后,再开一个终端运行psql,此时服务器端所属的终端显示:

    ListenSocket[0] is deal ok with FD_ISSET
    ListenSocket[1] is deal by FD_ISSET with failed result.

    也就是说客户端来一个请求的时候,只影响到ListenSocket数组中的一个元素;所以会激活一个backend。再开一个终端,仍然是同样的信息。那么ListenSocekt[1]应该算作备用。

    [作者:高健@博客园 luckyjackgao@gmail.com]

    回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页

     磨砺技术珠矶,践行数据之道,追求卓越价值

  • 相关阅读:
    属性包装
    生成器
    迭代器
    深拷贝-浅拷贝
    装饰器-wrapper
    类别不均衡
    参数优化-学习曲线
    参数优化-验证曲线
    参数优化-API
    D. Number Of Permutations 符合条件的排列种类
  • 原文地址:https://www.cnblogs.com/gaojian/p/2601033.html
Copyright © 2011-2022 走看看