當前位置:編程學習大全網 - 編程語言 - 有什麼情況壹定要, 只能是多線程編程才能解決? 給個具體的例子, 我初學多線程...

有什麼情況壹定要, 只能是多線程編程才能解決? 給個具體的例子, 我初學多線程...

這是典型的對多線程不理解造成的,問題本身就存在問題。

多線程只是壹種技術——所以沒有所謂的必須,或是只能。

多線程有其自己的適用範圍,我們只能說在哪種情況下適合使用多線程,但這種情況下絕對不會是只有多線程能解決。所以問題就言是多線程的典型應用場景,而非這麽絕對的問壹定要,只能是!不信換壹種結構——比如陣列處理器,人家編程時就使用了陣列,與線程的概念就沒有任何關系不了!

典型的使用場景其就是壹個:充分利用IO資源。

比如說壹個界面在工作時不停地接收輸入信息(如鍵盤,mouse,網卡等)而界面或是程序對信息處理時間較長時,最好使用多線程,多線程的意義在於在CPU參於界面處理的同時,可以處理輸入事件。如果單線程,妳必須等待界面或是程序處理完成之後才可以處理輸入事件,而多線程為了防止這種界面或是程序假死的現象(單線程在處理界面時不接受事件)。

再者如果程序在運行過程中,由於要長時間地硬盤進行讀寫,那麽多線程也能很好地解決這壹問題。

其實它的目的就是研究發現:單線程(進程)在CPU工作時可能造成其他IO資源(如磁盤IO)的空閑,而使用多線程則是合理利用IO資源,加快整個軟件的運行。

事實上了,windows系統是壹個多任務多進程的工作,每個進程之間利用的是CPU時間輪片法。而線程之間則利用的多資源的同步進行。

所以說,多線程本身只是提高了IO利用率,與長時間處理什麽的其實也沒有多大關系。比如windows服務並非線程,但每個windows服務是壹個進程,為什麽還都可以同時並發在系統中?這個原因就是CPU輪片。而多線程是基於進程所占cpu時間片內的IO資源充分利用。

另壹個技術也是線程延伸,就是我們常說的CPU是四核八線,其實他只是將每個物理核心再虛擬壹個線程CPU,只不過這個所謂的四核八線CPU僅僅只是提高了CPU的利用率而已。

笑壹樓與二樓,還扯什麽消息機制——這與系統與毛關系?都是大神啊!

其實在單核單線的CPU上,多線程除了增加線程開辟與回收等開銷外,對於CPU並不占任何便宜。而多進程之間已經有CPU輪片法進行各進程的統籌了。

  • 上一篇:慶余年:貓膩,範閑,是葉輕眉和慶帝的兒子嗎?
  • 下一篇:關於CPLD
  • copyright 2024編程學習大全網