1. 程式人生 > >並發一些概念

並發一些概念

then 處理器 同步 訪問 同步問題 bsp volatile 安全問題 使用

進程之間通訊用什麽:

  套接字、信號處理器、共享內存、信號量、文件。

線程之間通訊用什麽:

線程的好處:

  降低開發維護成本,提高程序性能,提高資源利用率和系統吞吐量。

線程帶來的風險:

線程安全問題:永遠不要發生糟糕的事情

線程的活躍性問題:某件正確的事情最終會發生。比如,死鎖 饑餓 活鎖(不明白)

性能問題:

  上下文切換開銷:

    保存和恢復上下文

    丟失局部性

    cpu化時間在線程調度

    線程共享數據時,必須同步,會抑制編譯器優化,使內存緩沖區數據失效,增加共享內存總線同步流量。

同步方式:

  synchronized

  volatile

  Explicit Lock

  原子變量

同步問題的解決方式:

  不在線程之間共享狀態變量

  將狀態變量修改位不可變變量

  在訪問狀態變量時使用同步

競態條件:

  不恰當的執行時序而出現不正確的結果叫做競態條件,Race Condition。

  當某個計算的正確性取決於多個線程交替執行的時序時,就會發生競態條件。

  常見的競態條件類型就是先檢查後執行(check-then-act),通過一個可能失效的觀測結果(重點是這個)來決定下一步的動作的情況。

並發一些概念