亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于瀏覽器事件循環具體實現?

關于瀏覽器事件循環具體實現?

C++
慕田峪7331174 2019-02-03 22:49:12
網上有不少講解瀏覽器事件循環機制的文章,主線程、任務隊列、微任務、宏任務.....都說的大同小異! 單有一點還是不明白:瀏覽器具體是怎么實現的?首先!如果有事件發生(不管是網絡還是鼠標事件...)這個事件需要先添加到任務隊列等待處理,那么問題來了,他是怎么把事件添加到隊列的?或者是說瀏覽器是怎么知道有事件發生了? 對于這點我的猜想是:也許所有異步的操作在有結果的時候都會調一個函數(不管是一個函數還是一個什么鬼,反正就是同一段代碼),這段代碼的作用就是通過各種計算最終把事件處理程序添加到任務隊列去....然后!瀏覽器是怎么執行循環機制的?我的猜想有兩個:1、也許是通過事件來觸發循環檢查隊列的行為的,比如當有一個異步事件到來,瀏覽器除了會調用我上面說的那段代碼放置事件處理程序之外,可能還會在放置后立馬觸發一次隊列檢查,如果有事件任務就立即取出執行,2、這個就簡單暴力了,也許瀏覽器另開一個線程,這個線程里埋了個定時器,就是setInterval一樣,每隔1毫秒甚至0.5毫秒就去檢查一下任務隊列...! 但這樣好像很浪費資源!
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

單線程只是說主線程是單線程,不是說沒有別的任何線程,所以以我的理解,event loop的意思大概就是開個事件循環線程執行while(true)

查看完整回答
反對 回復 2019-02-03
  • 1 回答
  • 0 關注
  • 472 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號