Please enable JavaScript.
Coggle requires JavaScript to display documents.
04執行緒與共時性 (執行緒的問題(Threading Issues) (訊號處理 (定義 : 是UNIX系統中通知特別事件發生,…
04執行緒與共時性
執行緒的問題(Threading Issues)
exec()的系統呼叫
訊號處理
定義 : 是UNIX系統中通知特別事件發生
有專門處理此訊號的程序
fork()的系統呼叫
取消執行緒
定義 : 在執行緒運作完之前取消
方法
非同步取消 : 立即結束執行緒
延遲取消 : 該執行緒的週期性檢查是否取消
執行序的本機儲存
定義 : 讓各個執行緒有自己資料的副本
排程活動
多核心程式(Multicore Programming)
多核心及多處理器時間的挑戰
劃分活動
平衡
資料分割
資料依賴
測試和除錯
並行(Parallelism)
一個系統可以同時執行多個任務
類型
資料並行 : 多個核心內含有相同的資料,且有相同的運作
任務並行 : 分布執行緒在核心中,每個執行緒有獨特的運作
執行在多核心系統
並發(Concurrency)
支持多個任務執行
執行在單核心系統
阿達爾定律(Amdahl’s Law)
多執行緒庫(Thread Libraries)
定義 : 為程式設計師提供創建和管理執行緒的應用程式介面(API)
方法
在沒有執行緒支持的使用者空間創造建
直接由作業系統支持
種類
POSIX Pthreads
提供使用者層級/核心階層
依據IEEE 1003的標準來定義創建和操縱執行緒的一套API
常見於UNIX OS
Pthreads API
Mutex : 創建、摧毀、鎖定、解鎖、設置屬性...
Condition Variable : 創建、摧毀、等待、通知、設置與查詢屬性
讀寫鎖的執行緒間的同步管理
執行緒管理 : 創建、等待、查詢狀態
Win32 threads
Java threads
多執行緒模型(Mutithreading Models)
類型
內核執行緒 : 由內核支援
ex:win32、POSIX、JAVA
用戶執行緒 : 由用戶級執行緒酷進行管理
ex : Linux、Mac OS X、Solaris
關係
多對一
一對一
多對多
執行緒的含義(Implicit Threading)
方法
Tread Pools
讓主執行緒可以同步處理其他工作
OpenMP
主執行緒生成一系列的子執行緒,將任務分給這些子執行緒執行
Grand Central Dispatch
將應用程式優化以支援多核心處理器
Fork Join
Intel Threading Building Blocks
優點
更快去服務一個需求
分開的task
工作可以被規劃或設定優先權
允許應用程式中的n個threads被約束size
概觀
執行緒(Thread)
應用
應用程式內運行多執行緒
多工作的應用程式可以通過獨立的執行緒來實現
大多數應用程式都是多執行緒
行程(process)創建是重量級的,然而執行緒(Thread)創
建重量是輕的
簡化編碼可以提高效率
內核(Kernels)一般是多執行緒
多執行緒的優點
響應度高(Responsiveness):一個多線程的應用在執行中,即使其中的某個線程堵塞,其他的線程還可繼續執行
資源共享(Resource Sharing):同一進程的多個線程共享該進程的内存等資源
經濟性(Economy):創建和切換線程的開銷要低於進程
可擴展性(Scalability):行程可以採用多處理機結構
定義 : 作業系統能夠進行運算排程的最小單位
Process是由thread組成
Task : 資源分配的最小單位