松本行弘: 編程語言的設計與實現 - 2-1 筆記

 前篇: 松本行弘: 編程語言的設計與實現 - 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 相比, 相對要做的事比較多. 
      所以在效能許可的狀況下, 設計一個高階的程式語言, 
      的確可以簡化不少寫程式的工作. 






留言

熱門文章