C 程序中最大執行緒建立數量分析

2021-07-09 07:10:03 字數 2568 閱讀 8591

thread th =

newthread(opthread);

th.isbackground =

true;

th.start();

private

void

opthread()

catch (system.exception ex)

finally

}

#region 最大執行緒測試

list_lstthread = new list();

private

void

btncreat_click(object sender, eventargs e)

private

void

createthread()

個", maxcount));

for (int i = 0; i < maxcount; i++)

個", i+1));

_lstthread.add(th);

thread.sleep(10);

}addtipmsg(string.format("列表中有執行緒數:", _lstthread.count));

}private

void

opthread()

catch (system.exception ex)

finally

}#endregion

public

void

addtipmsg(string src)

\r\n", datetime.now.tostring("hh:mm:ss"), src);

txttipmsg.text = str;

}));

}public

void

settip(string src)

));}

static void main()

.threadexceptioneventargs e)

static void unhandledexceptioneventhandler(object sender, unhandledexceptioneventargs e)

4、 程序編譯

在64位win7下,可以將目標編譯成32位或64位的程式,如下圖所示:

5、 實際測試

1)32位程序

執行前記憶體占用:

執行後記憶體占用:

執行後程式介面:顯示的執行緒和任務管理器稍有不同,任務管理器是定時重新整理程序資訊的。每個執行緒平均占用記憶體約1.1m。

同時程式報如下錯誤:

多執行幾次會發現,最大建立的執行緒數會有差別,但都在個位數。

2)64位程序

執行程式並直到出錯後可以看到,

a) 程式記憶體占用已近13g;

b) 執行緒最大建立數量3138個;平均每個執行緒占用記憶體4.1m;

c) 作業系統報記憶體溢位錯誤;

記憶體占用:

程式介面:

作業系統報錯:

四、 總結

在本機環境下,由上可得出以下結論:

1、32位程序最大可建立執行緒1335個左右,共佔記憶體1.5g,每個執行緒占用記憶體約1.1m;雖然沒有測試此時程序的運**況,但可以推斷出,此時程序已無法正常工作。

2、64位程序最大可建立執行緒數3138個,共佔記憶體13g,每個執行緒占用記憶體約4.1m;此時作業系統報記憶體溢位。程序無法正常執行。

根據工作中的經驗,多執行緒的程式建立執行緒最好控制在200以內,否則程式的效能將會受到影響。這一點在監控系統中要尤為注意,監控系統中往往會多個裝置建立socket連線,通常採用1個執行緒管理1個連線的方式實現。但是,在裝置數量過多時(如:幾千個裝置),就需要本文提到的最大執行緒數量的問題,怎樣進行管理,就需要特別注意。我會在後續的文章中進行分析。

每個執行緒塊中最大執行緒問題

1 每個block 最大1024個執行緒 視不同的卡來定 這個是執行緒總數的限制。2 每個執行緒塊最大維度的限制為x方向1024,y方向1024,z方向64 視不同的卡來定 3 乙個執行緒塊的執行緒情況同時收到上述兩條的約束,即,如果在x方向排布了1024個執行緒,那麼y和z方向的維度只能是1,否則...

Linux最大執行緒數限制

開始以為是記憶體不足導致無法建立執行緒,把jvm的 xms,xmx的2個引數都加大一倍 xms2048m xmx2048m。把 xss引數調小,還是啟動失敗。應該是系統方面的限制了,這台機器上搞了100個過tomcat程序,還有不少其他軟體,東西比較多且雜。確認過機器的記憶體還是足夠的,先排查系統引...

Linux下能夠建立的最大執行緒數

1.首先可以執行下面的程式檢查,檢查你現在的系統總共能建立多少個執行緒。我的系統上是i 380,也就是最多能建立380個執行緒。後面分析為什麼是它。maxthread.cc compile gcc maxthread.cc o thread lpthread include include incl...