併發同步與鎖

2021-06-29 03:21:45 字數 2044 閱讀 2621

1.乙個生產者和乙個消費者。

存在資源競爭情況:1)生產者和消費者同時訪問fruit store的庫存量,及同時修改庫存量時,存在資源競爭。

細分這種資源競爭的情況,至少會有如下兩種原因:1)當時fruit store庫存為0時,還未成功執行this.curfruitnum++,消費者發現fuilt store發現庫存數量還是為0,無法購買產品;當fuilt store庫存為100時,還未成功執行this.curfruitnum--,生產者發現庫存量還是100,不再生產產品。這種資源競爭的情況,如果對於某一次臨界值庫存100或0判斷,還未執行curf錯誤,還不算糟糕,雖然造成了某一次的判斷錯誤,但並沒有影響整體業務功能。2)還有一種極端的情況,生產者和消費者同時執行this.curfruitnum++和this.curfruitnum--,由於++和--非原子性操作,會導致結果和預期不同,這種情況會影響業務功能。

class  fruitstore 

return false;

} public boolean decrease()

return false; }}

class fruitworkertom implements runnable

public boolean stockfruit()

return false;

} @override

public void run()

} }}class fruitbuyermary implements runnable

public boolean buyfruit()

return false;

} @override

public void run()

} }}public class mainthread catch (interruptedexception e)

system.out.println(fruitstore.curfruitnum);

}}

1.多個生產者和多個消費者。

存在資源競爭情況:1)生產者和消費者同時訪問fruit store的庫存量,及同時修改庫存量時,存在資源競爭。2)生產者和生產者同時訪問fruit store的庫存量,及同時修改庫存量時,存在資源競爭。2)消費者和消費者同時訪問fruit store的庫存量,及同時修改庫存量時,存在資源競爭。

class  fruitstore 

return false;

} public boolean decrease()

return false; }}

class fruitworkertom implements runnable

public boolean stockfruit()

return false;

} @override

public void run()

} }}class fruitworkerbob implements runnable

public boolean stockfruit()

return false;

} @override

public void run()

} }}class fruitbuyermary implements runnable

public boolean buyfruit()

return false;

} @override

public void run()

} }}class fruitbuyerlucy implements runnable

public boolean buyfruit()

return false;

} @override

public void run()

} }}public class mainthread catch (interruptedexception e)

system.out.println(fruitstore.curfruitnum);

}}

Go 語言程式設計 併發 同步原語與鎖

協程鎖主要用於保證在執行 goroutine 的時候不阻塞 m。舉例 任務 a 需要修改 z,任務 b 也需要修改 z。如果是序列系統,a 執行完了,再執行b,很簡單。在併發系統中,因為 a,b 是併發執行的,所以就需要在操作 z 的時候確保 a b 保證序列化的機制。a 要修改 z,所以 a 加了...

python 同步非同步,併發並行,同步鎖

併發 系統具有處理多個任務 動作 的能力 並行 系統具有同時處理多個任務 動作 的能力 同步 當程序執行到乙個io 等待外部資料 的時候,需要等待,等待即同步 非同步 當程序執行到乙個io 等待外部資料 的時候,不需要等待,待資料接收成功後,再回來處理。gil 全域性解釋鎖 無論你有多少個執行緒,你...

併發 死鎖與同步

1 簡介 1 兩個併發的程序,其中乙個程序對另乙個程序的影響常常是不可預期的 2 兩個併發程序執行的相對速度無法相互控制 3 程序執行的相對速度不能由程序自己來控制,還與程序排程策略有關 4 不確定性也是併發系統的乙個特徵 1 簡介 死鎖指多個程序在執行過程中因爭奪資源而造成的一種僵局 2 出現死鎖...