同步 (計算機科學)
外觀
計算機科學中, 同步(synchronization)是指兩個不同但有聯繫的概念:進程同步與數據同步。進程同步指多個進程在特定點會合(join up)或者握手使得達成協議或者使得操作序列有序。數據同步指一個數據集的多份拷貝一致以維護完整性。常用進程同步原語實現數據同步。
線程或進程同步
[編輯]多個線程(或進程)要執行同一個特定的不可重入的程序代碼塊(稱為臨界區),這就需要適當的並發控制同步技術[1]。否則,可能會發生競態條件。
另一種同步要求產生於特定的操作順序,如應該先買機票然後登機。[3]
同步還需處理:
經典同步問題
[編輯]
參見
[編輯]- Future與promise, 純函數式編程中的同步機制
參考文獻
[編輯]- ^ Gramoli, V. More than you ever wanted to know about synchronization: Synchrobench, measuring the impact of the synchronization on concurrent algorithms (PDF). Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. ACM: 1–10. 2015 [2016-08-15]. (原始內容存檔 (PDF)於2016-03-04).
- ^ Janssen, Cory. Thread Synchronization. Techopedia. [23 November 2014]. (原始內容存檔於2020-10-19).
- ^ Fatheisian, Halleh; Rosenberger, Eric. Synchronization. Department of Computer Science, George Mason University. [23 November 2014]. (原始內容存檔於2015-01-28).
- Schneider, Fred B. On concurrent programming. Springer-Verlag New York, Inc. 1997. ISBN 0-387-94942-9.
外部連結
[編輯]- Anatomy of Linux synchronization methods at IBM developerWorks
- The Little Book of Semaphores(頁面存檔備份,存於互聯網檔案館), by Allen B. Downey