SV--過程語句與並發進程


a: 阻塞語句=,非阻塞語句<=,自加自減++、--,過程連續復制語句assign、deassign、force、deposit、release

b: if……else、case、casex、casez、

c: for、foreach、while、do……while、repeat、forever

d: break、continue、return、return(statement)

e: fork……join/join_any/join_none:並發結構

    mailbox:實現進程通信

    semaphore實現進程的互斥與仲裁

    event:實現進程的同步

f: 需要知道的概念:父進程與子進程、fork和begin名、進程與變量(靜態和動態)、disable(名或fork)、wait fork。

  maibox內置函數:new、put、get或peek、try_put、try_get或try_peek、num、生產進程和客戶進程、客戶進程可以掛起、參數化。

  semaphore內置:new、put、get、try_get。key

  event:->、->>、@、wait、事件觸發、事件觸發狀態。

 

1: case:做全等比較(===),而非==。

              casex:case表達式中的所有x值不參與比較。

              casez:case表達式中的所有的x和z都不參與比較。

    priority/unique 修飾case。

2: break:跳出本層循環。

       continue:調到本次循環尾部,開始下一次循環。

       return:退出一個任務或void函數。

       return(expression):退出一個函數並返回函數值。

3:fork……join/join_any/join_none

              join:表示fork內所有進程都結束后,跳出fork主進程。

              join_any:表示任一子進程結束,都跳出主進程,子進程沒結束的繼續執行。

              join_none:剛進子進程便跳出主進程,子進程繼續執行。

       fork表示主進程、fork內部的程序稱為子進程,可以用begin/end。

   代碼:fork:aaa或者begin:bbb,表示fork名為aaa,begin名為bbb。

  for循環中有fork/join_none時,SV會先做for,最后做fork,所以最后執行的子進程的變量可能為一樣,所以需要將變量定義為automatic。即SV會先執行循環體,將子進程展開后,在啟動並執行。

  disable可以中止特定塊的進程;disable fork僅中止fork塊的進程,中止所有子進程。

  wait fork表示等到所有的fork的主進程和子進程都執行完畢后,再執行之后的語句。

4:mailbox

       可以理解為FIFO,空時讀和滿時寫都會阻塞。try_*表示非阻塞,此外,get為取走,peek為復制走。

       如果為空時,去讀,會掛起,直到有數據寫入。

       new時,傳參缺省或為0時,表示此mailbox是無邊界的。傳參表mailbox深度。new返回句柄,傳參必須為正,負時會導致不確定后果。

       try_put,如果放入了,函數返回1,否則返回0。try_get,拿走了,返回1,數據類型不匹配,返回負1,空的返回0。try_peek類似。

       num得到此mailbox內的數據的個數。

       申明時,默認的mailbox無類型,可以接收各種數據,也可以申明是指定需要傳輸的數據類型,方便編譯器發現類型不匹配。

5:semaphore

       key的概念。

       new時,傳參缺省值為0,傳參表示key的個數。

       put傳參表示放回key的個數,缺省值1.

       get傳參表示獲得key的個數,缺省值1,不存在指定數目key時,進程會阻塞到對應key數量的出現。

       try_get無阻塞的獲得指定數目的key,存在則返回1,否則返回0。

6:event

       wait(event.triggered):等事件觸發狀態,可看成狀態觸發

       @:事件觸發,可看成沿觸發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM