• 对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索引页

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

  • 相关阅读:
    NIO学习
    XML(二)
    IO和NIO
    Log4j
    异常处理机制
    XML
    数据交互
    分页实现的三种方式
    Idea破解
    数据库连接池
  • 原文地址:https://www.cnblogs.com/gaojian/p/2601033.html
Copyright © 2020-2023  润新知