Postmaster主循环的大致流程
postmaster.c 中,主循环的大致流程如下:
/* * Main idle loop of postmaster */ static int ServerLoop(void) { ...... nSockets = initMasks(&readmask); for (;;) { ... if (pmState == PM_WAIT_DEAD_END) {... } else { ... selres = select(nSockets, &rmask, NULL, NULL, &timeout); } ... /* Now check the select() result */ if (selres < 0) { if (errno != EINTR && errno != EWOULDBLOCK) { ...... return STATUS_ERROR; } } /* * New connection pending on any of our sockets? If so, fork a child * process to deal with it. */ if (selres > 0) { int i; for (i = 0; i < MAXLISTEN; i++) { if (ListenSocket[i] == PGINVALID_SOCKET) break; if (FD_ISSET(ListenSocket[i], &rmask)) { Port *port; port = ConnCreate(ListenSocket[i]); if (port) { BackendStartup(port); /*To fork a new backend */ StreamClose(port->sock); ConnFree(port); } } } } ...... } }
从上面可以看出,基本上是以 C语言的标准select函数 来监听是否有新的连接请求进来。如果有连接请求则调用BackendStartup 函数,开启新的backend 处理连接。
这里面比较令我困惑的是:for (i = 0; i < MAXLISTEN; i++) 循环,对BackendStartup 函数的调用是发生在循环内部。ListenSocket 数组如何理解。需要进一步的研究。
Postmaster主循环的大致流程相关推荐
- cocos2d-x游戏开发(四)游戏主循环
欢迎转载:http://blog.csdn.net/fylz1125/article/details/8518737 终于抽时间把这个游戏写完了.由于没有自拍神器,所以把它移植到了Android上,用 ...
- U-boot主循环main_loop分析
2019独角兽企业重金招聘Python工程师标准>>> 原文在我博客:http://blog.csdn.net/andy_wsj/article/details/8614905 最近 ...
- master线程的主循环,后台循环,刷新循环,暂停循环
InnoDB存储引擎的主要工作都是在一个单独的后台线程master thread中完成的.master thread的线程优先级别最高.其内部由几个循环(loop)组成:主循环(loop).后台循环( ...
- C语言程序流程设计之循环【程序流程设计】(13)
循环 循环三要素 死循环 可控循环 可控循环的三要素 while "当"型循环 语法结构及流程 解析 代码演示 do while"直到"型循环 语法及流程 解析 ...
- 4.帧循环(游戏主循环),schedule
1 概述 游戏乃至图形界面的本质是不断地绘图,然而绘图并不是随意的,任何游戏都需要遵循一定的规则来呈现出来,这些规则就体现为游戏逻辑.游戏逻辑会控制游戏内容,使其根据用户输入和时间流逝而改变.因 ...
- C语言中要改变循环语句的流程可以使用的语句有哪些
C语言中要改变循环语句的流程可以使用的语句有:break,continue和goto.break语句可以终止循环而执行整个循环语句后面的代码:continue语句可以跳过循环体中剩余的语句而强制进入下 ...
- Linux-2.6.25 TCPIP函数调用大致流程
Linux-2.6.25 TCPIP函数调用大致流程 学习目的,随手笔记.函数和文字说明会不断补充更新. Changelog 2008.10.08 最近找工作忙.暂时缓缓 插口层 系统调用 se ...
- WordPress 主题教程 #5:主循环
调用博客日志的主循环(The Loop)是 WordPress 中最重要的 PHP 代码集,几乎所有的页面都会用到它.这也是从零开始创建 WordPress 主题系列教程的第五篇. 在开始继续学习之前 ...
- 【蓝桥杯嵌入式】【STM32】2_KEYBOARD(主循环扫描+外部中断)
文章目录 1 原理图 2 部分源码 主循环扫描实现 外部中断实现 下载工程文件: https://gitee.com/Joseph_Cooper/blue-bridge-embedded 1 ...
最新文章
- CentOS中vsftp安装与配置
- [POJ 1222] EXTENDED LIGHTS OUT
- OpenGL材质Materials
- WordPress插件开发-创建、停用、删除插件
- c mysql 视图_MySQL入门教程(七)之视图
- ASP.NET中UpdatePanel与jQuery同时使用所遇问题解决
- Visual Studio 2019 v16.8 Preview 2 发布
- 取模运算与hash function
- Python学习之表的数据类型
- 大数据技术——hadoop组件
- 极验打码平台官网地址
- 灵遁者组诗:无数个存在的可能
- php cdr,cdr文件用什么打开
- Paddle入门实战系列(二)基于PaddleOCR的体检报告识别
- 数据结构c语言——树的三种存储结构(双亲表示法、孩子表示法、兄弟表示法)
- HTML <ins> 标签
- CVPR2020/UDA/图像翻译-Cross-domain Correspondence Learning for Exemplar-based Image Translation基于范例的跨域对应
- 【python制作小游戏】大鼻子马里奥等你来挑战,还原度超高哦~
- 如何在官网下载各个版本的tomcat
- Swift5 1.基础介绍