這兩天一直被這個問題困擾,現在終于想明白了
有3種可能限制
1,執行緒的本質是一個行程,所以 ulimit 中的 processes 決定了上限,我的是7000多
2,我用的是Linux64位,網上有分析說每個行程的在物理記憶體中的8位元組64位中最終可以尋址到256t的虛擬記憶體,反正測驗時確定虛擬記憶體絕對不止4g,我指定幾百m的stack大小都是和8m一樣跑出4700多個執行緒,單個行程虛擬記憶體用盡后才會出現只能create出幾十個執行緒的情況
3給單個執行緒分配的stack大小,決定了在在這個執行緒里定義的區域變數等所占空間的大小,原來一個char buf【size】就可以耗盡stack,出錯退出可惜我基礎不扎實,malloc到堆不行,讀檔案進來到stack,本質也是讀了些8位元組的指標進來,搞了我久
4,物理記憶體的大小,多執行緒用盡物理記憶體,出現段錯誤,無法再創建執行緒
自己的推測,有不對的地方大家多多指點
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
受教!受教!uj5u.com熱心網友回復:
受教!受教!uj5u.com熱心網友回復:
關注,學習
uj5u.com熱心網友回復:
關注,學習
uj5u.com熱心網友回復:
6666666666666666uj5u.com熱心網友回復:
資瓷一下
uj5u.com熱心網友回復:
哇塞。。。。。uj5u.com熱心網友回復:
支持。。。。。。。uj5u.com熱心網友回復:
關注,學習學習學習學習uj5u.com熱心網友回復:
關注,學習學習學習學習uj5u.com熱心網友回復:
關注,學習學習uj5u.com熱心網友回復:
關注,學習學習uj5u.com熱心網友回復:
66666666666666666666666uj5u.com熱心網友回復:
大佬大佬啊啊啊uj5u.com熱心網友回復:
樓主物理記憶體的大小,多執行緒用盡物理記憶體,出現段錯誤,無法再創建執行緒
請問下程式運行的時候怎么能確定是多執行緒用盡物理記憶體,出現段錯誤,這個問題應該怎么除錯呢
uj5u.com熱心網友回復:
linux /proc 下不是有行程資料統計么,android 上有個工具procmem可以編譯看看uj5u.com熱心網友回復:
了解了 ,灰常感謝。。。很好uj5u.com熱心網友回復:
學到了!!!!!!!!!!!!!!!!
uj5u.com熱心網友回復:
很好,互相交流學習;;uj5u.com熱心網友回復:
關注。學習了啊uj5u.com熱心網友回復:
執行緒不是行程,執行緒屬于某一行程下的程式執行的最小單位。執行緒由相關堆疊、暫存器和執行緒控制表組成
Linux最大行程數 不等于 ulimit -u,因為系統會限制用戶最大行程數
uj5u.com熱心網友回復:
雖然看不懂,我還是給頂了uj5u.com熱心網友回復:
關注,學習學習學習學習uj5u.com熱心網友回復:
關注一下,學習了,謝謝大佬uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
學習學習,
uj5u.com熱心網友回復:
了解了,非常不錯uj5u.com熱心網友回復:
大神啊,學習了uj5u.com熱心網友回復:
大佬啊厲害厲害uj5u.com熱心網友回復:
太贊了,感謝分享。uj5u.com熱心網友回復:
關注,學習
uj5u.com熱心網友回復:
好像是這樣的uj5u.com熱心網友回復:
贊一個,biubiubiuuj5u.com熱心網友回復:
2. 現在的作業系統實際上是用到48bit 虛擬地址,所以最高可尋址256TB的虛擬記憶體,其中user space 128TB (0... ~0007FFFFFFFFFFF), kernel space 128TB (FFFF800000000000~FFFFFFFFFFFFFFFF)。 但是如果考慮虛擬記憶體空間跟執行緒數量的關系,其實他們沒太大關系。uj5u.com熱心網友回復:
關注,學習一下uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
學習,各位都是大神!uj5u.com熱心網友回復:
樓主好厲害,學習了uj5u.com熱心網友回復:
學習了不錯哦uj5u.com熱心網友回復:
非常好的東西。uj5u.com熱心網友回復:
好貼,學習!樓主辛苦了!!!uj5u.com熱心網友回復:
厲害了, 說的很好uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
厲害!!!!!!uj5u.com熱心網友回復:
謝謝樓主分享轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/29578.html
標籤:專題技術討論區
