粗略的將mongoose的源碼看了一遍,同時參考http://www.cnblogs.com/skynet/archive/2010/07/25/1784710.html的博客,大致瞭解了其框架,感謝吳秦
大致是這樣的
調用mg_start函數開始
調用mg_stop函數終止
在mg_start中,除了進行相關數據結構的申請和初始化外做了如下事情:
創建監聽線程,在監聽線程中監聽所有監聽端口,如果有新的連接到來,如果隊列不滿,則將連接放入隊列,並通知workers線程處理連接;如果隊列滿則等待workers線程通知隊列有空位
創建n個(默認是50個)workers線程,第一個線程等待監聽線程通知有連接放入隊列,其餘線程等待鎖,當有連接放入隊列中時,則等待通知的線程取出連接,並通知監聽線程隊列不滿,然後處理連接