Postmaster主迴圈的大致流程

2021-09-06 05:24:03 字數 1033 閱讀 3898

postmaster.c 中,主迴圈的大致流程如下:

/*

* main idle loop of postmaster */

static

intserverloop(

void

)

else

...

/*now check the select() result

*/if (selres < 0

)

}

/** new connection pending on any of our sockets? if so, fork a child

* process to deal with it.

*/if (selres > 0

)

}

}

}

......

}

}

從上面可以看出,基本上是以 c語言的標準select函式 來監聽是否有新的連線請求進來。如果有連線請求則呼叫backendstartup 函式,開啟新的backend 處理連線。

這裡面比較令我困惑的是:for (i = 0; i < maxlisten; i++) 迴圈,對backendstartup 函式的呼叫是發生在迴圈內部。listensocket 陣列如何理解。需要進一步的研究。

GLib的主迴圈

gui 應用程式都是事件驅動的。這些事件大部分都來自於使用者,比如鍵盤事件 滑鼠事件或筆點事件。還有一些事件來自於系統內部,比如定時事件 socket 事件和其它檔案事件等等。在沒有任何事件的情況下,應用程式處於睡眠狀態。因為這種事件驅動機制,gui應用程式都毫無例外的需要乙個主迴圈 main lo...

遊戲主迴圈 Game Loop 詳解

每乙個複雜的應用程式的核心都是乙個迴圈 loop 貫穿於乙個應用程式生活週期的是一部分 不斷的重複執行時間.這個迴圈 loop 可以就說是主迴圈。主迴圈的主要作用是 協調程式的行為 事件 和建裡應用程式的中樞。1.事件驅動 使用者輸入 2.固定時間的fps 每秒幀數 而最能解釋遊戲主迴圈的就是固定的...

遊戲主迴圈 Game Loop 詳解

每乙個複雜的應用程式的核心都是乙個迴圈 loop 貫穿於乙個應用程式生活週期的是一部分 不斷的重複執行時間.這個迴圈 loop 可以就說是主迴圈。主迴圈的主要作用是 協調程式的行為 事件 和建裡應用程式的中樞。1.事件驅動 使用者輸入 2.固定時間的fps 每秒幀數 而最能解釋遊戲主迴圈的就是固定的...