根據Maurice Herlihy和Nir Shavit(第3章)的多處理器編程技術,在併發程序正確性的情況下,順序一致性比靜態一致性更強。 在3.4.1中也提到,有順序一致的執行不是靜態一致的。我不明白如何。有人可以投光或提供樣品執行嗎?按順序一致但不是靜態一致的執行示例
6
A
回答
8
考慮一個queue (FIFO)你排隊和出隊的元素。
從this dissertation約併發,我讀取(第20頁):
被允許在順序一致性 模型和在靜止一致性模型不允許在 圖2.1中示出的場景的一個例子。兩個進程共享併發隊列數據結構。第一個進程隊列x。在一些非重疊的後續間隔中,第二個進程排隊y。最後,第二個進程執行一個 出列並接收y。這個例子是順序一致的,但是並不是靜止一致的,假設排隊 操作之間的時間落在靜止時間間隔之外。
圖2.1:
T1: --- enq(x) --------------------------- T2: ------------- enq(y) ---- deq():y ----
該歷史被順序一致性允許的,可以是允許或靜止的一致性禁止任一 ,並且通過線性化 一致性禁止的。
如果您假設兩個隊列之間的隊列是靜止的,那麼T2應該看到來自T1的變化,並且出列應該返回x。如果您假設兩個隊列之間沒有靜態間隔,那麼可以按照您的意願對兩個隊列進行重新排序,並且deq():y是一致的。
相關問題
- 1. pthread_join()是否會導致順序執行?
- 2. 順序一致性
- 3. 不一致的執行順序爲兩個嵌套的指令
- 4. 執行順序,靜態塊
- 5. 並行執行和順序執行之間的關閉不一致
- 6. alert()執行後,按鈕狀態不一致導致無意的雙重提交
- 7. Java File.list()一致的順序?
- 8. iPhone不一致執行JavaScript
- 9. 排序順序不一致對象
- 10. 因果一致性與順序一致性有何不同?
- 11. 按行顏色排序不一致
- 12. PHP:使用導致不一致結果的靜態變量
- 13. 靜態方法的執行順序(JAVA)
- 14. 一致的執行tr?
- 15. ActiveRecord created_at並強制執行順序一致性
- 16. Typescript不按照一致的順序編譯類
- 17. python - 類實例的不一致行爲
- 18. 執行順序,靜態塊,字段
- 19. MPI進程導致pthreads按順序執行
- 20. 順序一致性和最終一致性有什麼區別?
- 21. 執行進程一致
- 22. 按順序執行使用相同靜態對象的測試
- 23. postgresql序列下一個val是否與插入順序一致?
- 24. 的Android Canvas.drawLine不順暢,並不一致
- 25. 如何使用不一致的值順序解析行?
- 26. BigQuery執行時間不一致性
- 27. bcp命令執行不一致
- 28. TreeSet中比較器執行不一致
- 29. Javascript中執行時間不一致
- 30. MPVolumeView路由按鈕不一致顯示
以下執行是否可以是「靜態一致但不是順序一致」的示例? T1: - enq(x)--------- enq(y)------------________________________________________________ T2:------- deq(y)--- ----------- | ---- deq(x)-_______________________________________________這種執行顯然不是順序一致的。但是,如果我們在** | **方便地採取靜態間隔,那麼我們可以重新排序T1的兩個enq()s,並且它將靜態一致。 @ewernli,你認爲這個解釋有意義嗎? – Trojosh
我認爲是這樣,基於我對靜止一致性的理解。但是這對我來說也是一種新的一致形式,我昨天已經知道了:) – ewernli
@ewernli是認爲順序一致性的原因:enq(y)deq():y enq(x)是一個可能的順序執行順序嗎? I.E在程序順序中仍然有效。 – William