一.多執行緒這裡的東西個人覺得整體的設計靈感來自於生活,多執行緒的目的是為了提高程式執行的效率,對映到我們生活中,是能找到異曲同工之妙的.
二.多執行緒提的比較的多的概念可能就是同步和非同步了,什麼是同步,簡單說就是前面的任務沒完成的話不執行後面的任務,非同步就是前面的任務就算沒執行完,後面的任務也開始執行.比如生活中,我們下班回家了,需要做飯,洗衣服,拖地.同步的方式就是一.先用電飯鍋開始煮飯,花了10分鐘,我們看著電飯鍋把飯煮熟,二.然後再去用洗衣機洗衣服,花了10分鐘,看著洗衣機把衣服洗完,三.再來拖地花了5分鐘.總共花了25分鐘.非同步的方式就是一.先把電飯鍋插好電讓它開始煮飯,二.然後再開啟洗衣機讓它開始洗衣服,三.然後我們再來拖地.當著3件事都完成了,總共也就是花了10分鐘了.效率不言而喻了.
三.對於單核cpu,多執行緒只是一種假象,它是在多個任務之間完成快速的排程,以提高cpu的使用效率(但是它也有上限的,並不是給的任務越多效率越高),就像上面的例子所提到,做飯,洗衣服,拖地其實都是乙個人完成的.對於多核的情況,就好比上面的3件事情是由3個人一起完成.
四.好了,對多執行緒有個初步的大概的理解,我們再說下相關的專業名詞.
1>程序:指的是正在執行的應用程式
2>執行緒: cpu排程的最小單位,真正用來執行任務的
3>多執行緒:乙個程序中開啟多條執行緒並行執行任務
4>序列:同乙個執行緒內部執行多個任務(可以理解為串在一根繩子上,前面的任務執行完後再執行後面的)
5>並行:多個執行緒同時執行任務(可以理解為在操場上跑步比賽,多個人在多條跑道上一起奔跑,每個跑道就是乙個執行緒)
6>併發:多個任務需要同時執行
7>同步:(任務的執行方式) 前面的任務執行完後,再開始執行後面的任務
8>非同步:(任務的執行方式) 前面的任務不管有沒有執行完,後面的任務也開始執行
9>同步函式:dispatch_sync 只能在當前的執行緒中執行,不能開啟新的執行緒
10>非同步函式 :dispatch_async 可以在新的執行緒裡執行,具有開啟新的執行緒能力,但不一定開啟新執行緒
11>主線程:ios程式跑起來的時候預設執行的執行緒就是主線程,它的作用是重新整理和顯示ui,處理ui相關事件
12>子執行緒: 除了主線程,其他的執行緒都是子執行緒,子執行緒一般不要用來重新整理ui(但個人經驗遇到過乙個問題,svprogresshud的乙個彈窗在子執行緒中可以顯示,但最好放在主線程裡,因為我們開發中,通常都是把和ui相關的操作放在主線中,耗時操作一般是放在子執行緒中的)
漫談C Builder多執行緒程式設計技術
在很多情況下,可能需要為程式建立執行緒。這裡給出其中一些可能性 1 如果建立的是乙個多文件介面 multiple document inte ce,mdi 程式,那麼為每個視窗分配乙個執行緒就顯得十分重要了,例如,對於乙個通過多個modem同時連線到多個主機的mdi通訊程式而言,如果每個視窗都有它自...
多執行緒(一) tomcat 多執行緒
web server允許的最大執行緒連線數還受制於作業系統的核心引數設定,通常windows是2000個左右,linux是1000個左右。1.編輯tomcat安裝目錄下的conf目錄下的server.xml檔案 maxthreads 150 表示最多同時處理150個連線,tomcat使用執行緒來處理...
多執行緒 理解多執行緒(一)
程序 程序是cpu分配資源的基本單位 執行緒 執行緒是cpu排程的基本單位 資源分配給程序,所有執行緒共享該程序的資源 當執行緒數大於cpu的數量,會出現時間片的輪詢。cpu時間片是直接分配給執行緒的,執行緒拿到cpu時間片就能執行了 cpu時間片不是先分給程序然後再由程序分給程序下的執行緒的。所有...