Loading AI tools
数据库术语 来自维基百科,自由的百科全书
任務平行(英語:Task parallelism),也稱為功能平行(function parallelism)或控制平行(control parallelism),是平行計算程式設計模型的一種。在這個模型中,每一個執行緒執行一個分配到的任務,而這些執行緒則被分配(通常是作業系統核心)到該平行計算體系的各個計算節點中去。
一般任務在處理器上通過排程使用者執行緒(User Thread,相對於核心執行緒Kernel Thread)實現的。作業系統也可提供一個使用者模式下的排程器。排程器的任務就是儘可能合理的將任務分配和均衡到各個處理器上。
同步是任務平行里涉及到最重要的任務之間通訊的方法,分為行程同步(或者執行緒同步)和資料同步。資料同步和行程同步的目的是為了使程式在多處理器執行的條件下保持一定的主記憶體模型。
同步對象是用於實現同步的資料結構對象。可分為核心同步對象與使用者同步對象。使用者同步對象更有效率;核心同步對象使得執行緒在使用者態與核心態切換,花銷巨大。使用者態的同步對象有臨界區與原子操作等;核心態的同步對象有主記憶體屏障(Memory barrier)、互斥鎖(Mutex)、號誌(Semaphore)和鎖(Lock)、管程(Monitor)、訊息(Message)、自動重設事件、人工重設事件、自動重設定時器、人工重設定時器、進城、執行緒、作業、檔案、 控制台輸入、檔案修改通知、管道(Pipe)等。
核心同步對象通常有signaled與nonsignaled兩種狀態,可分別譯作置位的(標誌的、通知的)與未置位的(未標誌的、未通知的)。當作業系統設定一個同步對象為signaled,任何等待該對象的執行緒被從該對象上釋放,從等待狀態變為可執行狀態。同步對象通過等待控制代碼(waitable handle)訪問。等待控制代碼處於signaled狀態,則該等待控制代碼不被任何執行緒擁有。[1]
Windows作業系統的API:WaitForSingleObject、WaitForMulitpleObjects、SignalObjectAndWait(通知一個核心對象並等待另一個核心對象的原子操作)、MsgWaitForMultipleObjects(等待多個核心對象阻塞時仍可以回應Windows訊息的到來)、MsgWaitForMultipleObjectsEx用來等待同步對象從nonsignaled變為signaled狀態。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.