baci[C語言中的平台]

baci[C語言中的平台]
baci[C語言中的平台]
更多義項 ▼ 收起列表 ▲

BACI是一個可以編寫並發程式的環境,在這種並行的編譯環境中,可以把BACI中的一些語句嵌入到C++,C,Java等高等程式中,使程式可以並行執行。

BACI提供了一個可以編寫並發程式的環境,在這個平台上,我們可以很容易的模擬程式的並發執行,在這種並行的編譯環境中,可以把BACI中的一些語句嵌入到C++,C,Java等高等程式中,使程式可以並行執行 .

基於C++的BACI語法(C—BACI Compiler)該語法結構是在C++語法結構的基礎上,增加一些並發語句擴展而來,一下是一些常用的並發語句

1. cobegin函式

在BACI系統中,並發進程與並發執行緒同步,多個進程可以並發的在cobegin 塊中來並發執行,該函式必須在主函式中,語法結構為:cobegin {

proc1(...);proc2(...);. . . . procN(...);

}

其中每個進程並發隨機執行,每次執行的順序可能會不一樣,當所有的進程接受後,該函式結束。

2. Semaphores/Binarysem

信號量的(Semaphores)機制可以更方便的實現進程同步,Semaphores是一種如C中”int”一樣的類 型,可以用來定義信號量類型的變數,Binarysem是一種二進制信號量,它所定義的變數只能取1或 0,用來表示互斥。

1).信號量的聲明和初始化semaphores a;binarysem s;

上面聲明了兩個信號量a,b,其中b為二進制信號量信號量按如下方式初始化:

Initialsem(semaphores , interger);

Initialsem(binarysem , 0/1);

2)P(wait)/V(signal)函式強大的PV操作與信號量一次很方便的解決了並發進程同步與互斥問題

函式原型:

void p(semaphores &s); or void wait(semaphores &s);

void v(semaphores &s); or void signal(semaphores &s);

函式說明:

p(sem): 如果sem > 0,則sem減1,調用P的進程可以繼續執行,如果sem=0,則該進程阻塞,該函式操作是原子性的.v(sem): 如果v=0,或有進程阻塞,則將其喚醒,如果沒有進程等待,將sem加1,在任何時候調用v的進程可以繼續執行,其操作也是原子的.

3.atomic

atomic關鍵字定義了原子操作,即該函式操作不可剝奪,每次只能一個進程訪問用法:在要原子執行的函式前加atomic即可,如:atomic int sum(){

. . . ..

}

則sum()函式就可以原子操作了

4.void suspend(void)suspend函式將調用的執行緒掛起

5.void revive (int process_number)

該函式用於喚醒某個進程,其進程號為process_number

相關詞條

熱門詞條

聯絡我們