簡體   English   中英

循環時臨界區概率

[英]critical section prob while loop

好的,我正在閱讀加爾文第六版的關鍵部分問題。 事實是,問題中使用的算法有一個while循環:

do
  {
   while(turn!=i);
   critical section
   turn=j;
    remainder section
}while(1);

最初轉= = 0,對於i = 0,進程p0運行其關鍵問題。 while(turn!=i); 評估此特定情況的while(false)

現在我的問題是,如果while循環計算為false,那么如何評估以下關鍵部分。 這是愚蠢的部分,如果出於任何原因,那么(轉!= i); 有一個分號,然后以下語句沒有while循環的影響! 那么,在這里使用while循環是什么意思!? :|

在這種情況下,while循環將無限循環,或者什么都不做。 帶有半colomn的while循環指定它應該嘗試循環,但是沒有在while塊中執行指令。 寫作while (1); 相當於while (1) {}

這種語法的一個常見用法是當你想要迭代時,比如說,直到字符串的結尾,進一步的工作。 你會寫類似的東西

char *work_on_end_of_string(char *str) {
  int i = 0;

  while (str[i++]); 
  // now str[i] is pointing on the end of the string
}

在你的情況下,正如你提到你的程序是多線程的, turn或者i似乎需要在執行關鍵部分之前有所不同。 while語句允許循環測試這個條件,直到一個線程修改其中一個來滿足它。

如果while循環中的條件為false,那么進程P0的臨界區將執行,如果條件為真,則while循環迭代(認為它是進程P0進入休眠狀態),直到另一個循環的值被另一個改變為止。正在運行其關鍵部分的流程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM