可執行檔案是一個靜態的檔案。
程序相當於一個空間,用來裝入並執行這個檔案,程序本身不幹活。
每個程序會至少啟動一個主執行緒,活都是執行緒乾的。
一個程序可以啟動多個執行緒。
舉個不恰當的例子,上古時代的IE只能開一個視窗,這就相當於單執行緒。
你把這個視窗關了(把主執行緒關了),IE也就退出了(程序也就結束了)
如果你想同時看兩個網頁,那你可以開啟兩個IE視窗(同時啟動兩個程序),這叫多工。
而多執行緒程式就相當於是現在的瀏覽器,一個視窗可以開多個tab。當然也可以開多個視窗,每個視窗開多個tab。
多個tab可以同時瀏覽多個網頁。
關掉其中幾個tab,視窗不會關閉。(執行緒可以啟動可以關閉,不影響程序)
把所有的tab都關了(所有執行緒全關閉了),視窗也就跟著關了(程序也就退出了)
那一個程序啟動多個執行緒和啟動多個程序每個程序只跑一個主執行緒有什麼區別?
區別在於同一個程序內資源可以共享,同一個程序內多個執行緒可以互相訪問。
多個程序之間是互相隔離的,要交換資料或者互相訪問則需要RPC或者其他一些機制來完成。
最後強調一下:上面這個就是舉個例子,實際上的瀏覽器並不是這麼工作的。
可執行檔案是一個靜態的檔案。
程序相當於一個空間,用來裝入並執行這個檔案,程序本身不幹活。
每個程序會至少啟動一個主執行緒,活都是執行緒乾的。
一個程序可以啟動多個執行緒。
舉個不恰當的例子,上古時代的IE只能開一個視窗,這就相當於單執行緒。
你把這個視窗關了(把主執行緒關了),IE也就退出了(程序也就結束了)
如果你想同時看兩個網頁,那你可以開啟兩個IE視窗(同時啟動兩個程序),這叫多工。
而多執行緒程式就相當於是現在的瀏覽器,一個視窗可以開多個tab。當然也可以開多個視窗,每個視窗開多個tab。
多個tab可以同時瀏覽多個網頁。
關掉其中幾個tab,視窗不會關閉。(執行緒可以啟動可以關閉,不影響程序)
把所有的tab都關了(所有執行緒全關閉了),視窗也就跟著關了(程序也就退出了)
那一個程序啟動多個執行緒和啟動多個程序每個程序只跑一個主執行緒有什麼區別?
區別在於同一個程序內資源可以共享,同一個程序內多個執行緒可以互相訪問。
多個程序之間是互相隔離的,要交換資料或者互相訪問則需要RPC或者其他一些機制來完成。
最後強調一下:上面這個就是舉個例子,實際上的瀏覽器並不是這麼工作的。