windows程序有多少個(gè)線程最為合適?
在學(xué)習(xí)IOCP的時(shí)候,網(wǎng)上每個(gè)教程都強(qiáng)調(diào),用來(lái)從完成隊(duì)列取出數(shù)據(jù)的線程最好是 CPU數(shù)量的兩倍。這是為了盡量減少線程的切換。 這個(gè)我懂,一個(gè)網(wǎng)絡(luò)庫(kù)里面,會(huì)有多個(gè)線程池,比如從緩沖隊(duì)列取出數(shù)據(jù)的,用來(lái)處理的,處理后加入緩沖區(qū)回發(fā)的,這些線程池合起來(lái)也會(huì)創(chuàng)建很多線程的,那么這不是一樣的使得CPU切換的厲害么?是不是一個(gè)程序里面所有的線程合起來(lái)是CPU數(shù)量的2倍最好呢?(或者稍微多一點(diǎn),達(dá)到一個(gè)平衡) 比如一個(gè)灶臺(tái)最好是兩個(gè)廚師一起用好點(diǎn),一個(gè)炒菜一個(gè)就去切菜,切好了讓他來(lái)炒菜,這樣就合理利用了,但是伙食管理員卻并不能讓灶臺(tái)只是炒菜,它還需要用它來(lái)燉湯,或者燒熱水(其他的處理線程),那這樣一樣的會(huì)導(dǎo)致灶臺(tái)這里切換來(lái)切換去的,效率也會(huì)打折扣。 那到底多少個(gè)線程最好呢??