松本行弘: 編程語言的設計與實現 - 2-1 筆記
第二章一開始介紹 process (進程) 和 thread (線程) 的演進,
想起二十多年前研究所時所接觸的 Mach OS,
當時 thread 剛被開發出來, 在同一個 process 內,
多個 thread 共享記憶體空間. 降低 process 間訊息傳遞通信的困難度.
蔚為創舉.
但 thread 開發時控制不好可能會出問題, 例如 github
一般狀況結果是 5000, 但在很特殊的情況下,
如果 thread 和主線程, 同時做將 a 取出值 5000 處理的話,
就可能依照 thread join 結束時的順序, 得到值 4000 或 6000.
這種值不確定的 bug, 被稱為 海森堡 bug (或許現今叫 薛丁格的貓 比較合適 )
一般常見的, 可能用 mutex lock 保護 - github
但 lock 機制可能會增加 overhead 並拖慢速度...
因此 linux 後來還發展出 rcu 和 lock free programming 的機制
之後繼續介紹幾個理想的 concurrent programming model.
PS: 如果用 C pthread 來實現的話 - github
和 Ruby 相比, 相對要做的事比較多.
所以在效能許可的狀況下, 設計一個高階的程式語言,
的確可以簡化不少寫程式的工作.
留言
張貼留言