將單線程代碼多線程化遇到問題

1:對線程而言是全局變量,並不是對整個程序也是全局的;
解決方案:
a:全面禁用全局變量;
b:爲每個線程賦予私有全局變量
2:很多庫過程是不可重入的
解決方案:爲每個過程提供包裝器,改包裝器設置一個二進制位從標誌某個庫處於使用中。在調用沒有完成之前任何使用該庫的線程都會被阻塞。(該方案會極大降低系統潛在的並行性)
3:信號有的是線程專用的,但是有的不是。
4:堆棧管理,當一個進程堆棧溢出時,內核只是自動爲改進程提供更多的堆棧,當一個進程爲多個進程時,必須有多個堆棧。內核如果不瞭解所有的堆棧,就不能使其自動增長,直到堆棧出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章