初探程序執行緒

2022-07-26 17:54:08 字數 1171 閱讀 5432

好吧,鑑於世界之窗又一次在多頁面同時開啟時就陣亡,而chrome還妥妥的,實在討厭不明不白的感覺,所以決定了解一下瀏覽器,暫時先了解一下執行緒與程序~

乙個瀏覽器給我們直觀的體驗來自於dns預讀取,瀏覽器核心對html,css,js的解析,頁面的排版與渲染,瀏覽器本身架構,包括程序與執行緒。

程序:乙個具有獨立功能的程式及其資料在執行任務的機體上按序執行的活動,一般我們編寫程式就是按一定邏輯,一定順序去執行某些特定操作,完成特定功能,此過程就好像用程式去指揮計算機如何工作,是程式在乙個資料集合上執行的過程,會涉及到資源的調配,記憶體的使用。每一程序都有自己的位址空間,與其他程序獨立開了。好吧,你可以把它看做實驗室裡正在進行的實驗,一步一步的匯出結果。

執行緒:程序中某單一順序的控制流程,乙個程序可以執行多個執行緒,此時各執行緒共享該程序資源,可以併發執行,但執行緒間存在資源搶占問題,相互制約,致使執行緒執行呈現間斷性。相當於同一專案,同一實驗室裡的小夥伴們,每人負責這一實驗的不同模組,當然,此時的電腦,焊臺,測試工具,網線,插座等資源都是定量的,所以,你要使用相關資源時,該資源必須不被占用,否則請耐心等待吧~

頁面假死:即瀏覽頁面時網頁失去響應,準確的說是反應過慢,看不到頁面變化,乙個網頁假死常常會造成整個瀏覽器反應遲鈍甚至完全無法使用,好像蒙上了層紗布,無法對瀏覽器進行任何操作,這時如果等上一段時間也許瀏覽器會緩過氣來,不過你的時間就流光了,有時候還可能你是時間也走了,瀏覽器也岔氣了~我們編寫**時,如果**過於複雜,js執行計算時常過長,頁面控制項資料量過多,**有漏洞,記憶體洩漏嚴重都會造成頁面假死現象。而對於瀏覽器,則可能由於被篡改而核心被破壞,本身bug,補丁錯誤等原因而造成假死現象。

一般瀏覽器對此的解決措施是使用多執行緒架構,即每個頁面啟動乙個獨立執行緒,同一程序裡的執行緒是共享記憶體區的,這種技術占用的系統資源少,當多個執行緒同時請求同一資源時則可能出現問題,此時,還是得看瀏覽器如何去處理了。

頁面崩潰:指頁面指令碼與瀏覽器不相容,或瀏覽器本身問題,而導致網頁與電腦某一程式衝突,無法開啟。這種現象給我的最直接表現就是:頁面崩潰了~

為了應對瀏覽器崩潰現象,便出現了多程序架構:每個網頁使用不同程序來開啟,頁面假死與頁面崩潰都不會對整個瀏覽器造成影響,同時頁面關閉後程序便會完全釋放,網頁占用資源會徹底清除。ie8,與chrome採用的就是這種技術,不過這種技術占用記憶體多。

多程序與多執行緒實際上只是使單頁面的假死或崩潰不影響其它頁面,而並非假死,崩潰頁面的搶救者。

這探索之旅還長著呢~

初探 程序通訊與執行緒同步

不推薦使用signal 介面,推薦使用sigacton 相關介面 訊號集處理函式 int sigemptyset sigset t set int sigfillset sigset t set int sigdelset sigset t set,int signo int sigmember s...

初探 作業系統之程序執行緒

2016.11.1補充 1.18 fork後,子程序繼承父程序的什麼,父 子程序區別?執行緒 引入的狀態 狀態間的轉換 核心模式到使用者模式 將當前工作目錄更改為根目錄 因為從父程序繼承過來的目錄可能在乙個掛載的檔案系統中,如果不更改為根目錄,則所掛載的檔案系統不能解除安裝 關閉不需要的檔案描述符 ...

多執行緒初探

多執行緒程式設計一直沒做過,沒有這方面的需求 自己先學習一下多執行緒的基礎,弄點小例子試驗.建立執行緒有兩種方法 繼承thread類和實現runnable介面。color red 一 繼承 thread 類,覆蓋方法 run color 在建立的 thread 類的子類中重寫 run 加入執行緒所要...