關於事件輪詢(event loop)的問題

lovejdon發表於2012-03-12
最近看了看Node.js的東西,在單執行緒下執行非阻塞i/o,依據事件輪詢來達到提高併發的效率。這一點可以理解。但是我深入想象內部實現,應該也是開了後臺執行緒,對於每一個I/O操作定義的回撥進行註冊,然後依次執行回撥方法。不知道是否是這樣的,如果是這樣的,那麼所謂輪詢,也就是後臺執行緒做個無線迴圈去佇列獲取註冊的回撥事件,但是由於回撥方法中可能涉及到資料庫或者I/O操作,那又是耗時的地方,可以肯定的是,必然會有一個地方去執行耗時的操作,應該就是在後臺執行緒中,那個人認為後臺執行緒應該是不止一個來做,而是多個執行緒去處理。不知道這裡理解的是否正確,確實有點迷惑了。mixu的事件輪詢博文我看了,實際的實現方式是利用Libev這個東西,但是是基於C的,所以也沒去看,不知道具體事件輪詢的大概原理是否理解的正確,請banq指點下,多謝!

相關文章