很多人將Windows 10系統(tǒng)稱(chēng)為“Bug10”,雖然太言過(guò)其實(shí),但不可否認(rèn)的是,Windows 10確實(shí)經(jīng)常會(huì)出現(xiàn)一些很詭異的Bug。來(lái)看看Google程序員Bruce Dawson的遭遇。公司為他配備了一套Intel 24核心48線(xiàn)程處理器、64GB內(nèi)存、高檔SSD組成的強(qiáng)大系統(tǒng),按理說(shuō)用來(lái)編程會(huì)快速閃電,但奇怪的是,在啟動(dòng)編譯后,Windows 10系統(tǒng)卻卡得像一只蝸牛,鼠標(biāo)幾乎都動(dòng)不了了。
調(diào)出系統(tǒng)管理器查看,卻發(fā)現(xiàn)無(wú)論CPU還是內(nèi)存都并沒(méi)有占滿(mǎn),只有大約50%。
Bruce Dawson輕車(chē)熟路地啟動(dòng)Windows系統(tǒng)事件追蹤工具ETW,結(jié)果發(fā)現(xiàn)Windows 10在進(jìn)程銷(xiāo)毀方面存在一個(gè)嚴(yán)重的Bug。
簡(jiǎn)單來(lái)說(shuō),當(dāng)一個(gè)Windows系統(tǒng)/程序進(jìn)程需要關(guān)閉的時(shí)候,會(huì)通過(guò)單獨(dú)一個(gè)線(xiàn)程進(jìn)行處理,也就是說(shuō)即便你有幾十個(gè)處理器核心/線(xiàn)程,Windows系統(tǒng)也完全支持它們,但這時(shí)候Windows其實(shí)是單線(xiàn)程運(yùn)行的。
一般情況下這也沒(méi)什么,但對(duì)于程序員來(lái)說(shuō),頻繁啟動(dòng)、關(guān)閉大量進(jìn)程是很常見(jiàn)的,于是悲劇就發(fā)生了,而且更糟糕的是,CPU核心數(shù)越多,問(wèn)題反而越嚴(yán)重。
Bruce Dawson面臨的就是,1個(gè)線(xiàn)程在拼命忙碌,其他47個(gè)都在圍觀(guān)……
進(jìn)一步研究發(fā)現(xiàn),這個(gè)Bug只在Windows 10上存在,老版本的諸如Windows 7反而沒(méi)問(wèn)題。
Bruce Dawson還寫(xiě)了一篇詳細(xì)的分析文章,感興趣的可以戳這里。