天天看點

《并行計算的程式設計模型》一2.2.2 線程

GASNet支援用戶端使用線程操作且适用于多線程執行。預設情況下,GASNet為各支援網絡建構了三個庫函數的變體以支援不同用戶端線程模型。其中一些名稱為“seq” “parsync”和“par”的關鍵字對應于庫檔案名和預處理器标記GASNET_SEQ、GASNET_PARSYNC和GASNET_PAR。當其包含gasnet.h及其連結的庫檔案時,上述三個關鍵字中的一個必須由用戶端定義且與相應的預處理器标記對應。這三個模型如下:

GASNET_SEQ

該模式允許用戶端在每個程序中使用單線程調用GASNet,且不限制用戶端使用的程序數,但必須使用其中一個線程調用全部GASNet。

GASNET_PARSYNC

該模式最多允許一個線程并發調用GASNet。多線程調用GASNet時可能會引起互斥。而GASNet沒有提供這種互斥的機制,是以需要用戶端處理。

GASNET_PAR

這是最常用的模式,支援多個用戶端線程并發調用GASNet。

在使用SEQ或PARSYNC模式時,用戶端調用GASNet的限制隻局限于用戶端上。GASNet使用内部線程是合法的(甚至是在SEQ編譯時),且這些内部線程可以用于執行用戶端的AM處理程式。是以,無論是線程模式或其他模式,用戶端代碼都必須正确使用GASNet的并發控制機制(詳見2.3.4節)。

繼續閱讀