多線程搜索文件比單線程快嗎 測(cè)網(wǎng)速單線程和多線程什么意思
夕逆IT
- 開(kāi)發(fā)語(yǔ)言
- 2023-08-13
- 154

大家好,如果您還對(duì)多線程搜索文件比單線程快嗎不太了解,沒(méi)有關(guān)系,今天就由本站為大家分享多線程搜索文件比單線程快嗎的知識(shí),包括測(cè)網(wǎng)速單線程和多線程什么意思的問(wèn)題都會(huì)給大家...
大家好,如果您還對(duì)多線程搜索文件比單線程快嗎不太了解,沒(méi)有關(guān)系,今天就由本站為大家分享多線程搜索文件比單線程快嗎的知識(shí),包括測(cè)網(wǎng)速單線程和多線程什么意思的問(wèn)題都會(huì)給大家分析到,還望可以解決大家的問(wèn)題,下面我們就開(kāi)始吧!
多線程的執(zhí)行效率一定高于單線程嗎
恰恰相反,多線程的執(zhí)行效率一定低于單線程
多線程的目的并不在于提供CPU的執(zhí)行效率,而且在于多個(gè)事務(wù)的準(zhǔn)并行處理。準(zhǔn)并行的涵義在于并不是同時(shí)的,單核的CPU一個(gè)時(shí)刻只能執(zhí)行一條機(jī)器指令。
多線程是將CPU的PC指針運(yùn)行分解為非常小的時(shí)間片,將這些時(shí)間片分配在不同的進(jìn)程,不同的線程之間運(yùn)行。
這樣CPU就不至于長(zhǎng)時(shí)間堵塞在某一些事務(wù)中,導(dǎo)致其它事務(wù)沒(méi)有辦法處理。
比如某個(gè)軟件在進(jìn)行大數(shù)據(jù)的收發(fā)或者運(yùn)算時(shí),需要刷新顯示界面以及人機(jī)交互。
假設(shè)數(shù)據(jù)的收發(fā)或者運(yùn)算需要數(shù)秒時(shí)間,如果用單線程,在做數(shù)據(jù)處理的幾秒時(shí)間內(nèi),沒(méi)辦法顯示人機(jī)交互,則用戶在界面上做操作,程序就沒(méi)有任何響應(yīng)。
如果用多線程,在數(shù)據(jù)處理線程處理了一段時(shí)間之后,CPU的指針暫停執(zhí)行數(shù)據(jù)線程程序,轉(zhuǎn)去執(zhí)行界面處理程序,則用戶做操作時(shí),程序不至于沒(méi)有響應(yīng)。
采用多線程之后,由于線程本身創(chuàng)建和切換的開(kāi)銷,采用多線程不會(huì)提高程序的執(zhí)行速度,反而會(huì)降低速度多線程和單線程有什么本質(zhì)區(qū)別
多線程和單線程本質(zhì)區(qū)別是:
(1)多線程的產(chǎn)生并不是因?yàn)榘l(fā)明了多核CPU甚至現(xiàn)在有多個(gè)CPU+多核的硬件,也不是因?yàn)槎嗑€程CPU運(yùn)行效率比單線程高。單從CPU的運(yùn)行效率上考慮,單任務(wù)進(jìn)程及單線程效率是最高的,因?yàn)镃PU沒(méi)有任何進(jìn)程及線程的切換開(kāi)銷,
(2)實(shí)際上,多線程的出現(xiàn)主要為了解決IO設(shè)備的讀寫速度往往比CPU的處理速度慢造成的單線程程序運(yùn)行阻塞問(wèn)題,一個(gè)極端的例子就是如果你需要用戶在鍵盤上輸入一個(gè)數(shù)據(jù),當(dāng)用戶沒(méi)有輸入前,單線程程序就阻塞了,多線程程序就可以放個(gè)音樂(lè)或繼續(xù)干一些程序中除了鍵盤輸入外的工作,因此,多線程能提高因程序由于等待某個(gè)資源阻塞時(shí)其他資源的利用率(是利用率不是效率)。
(3)因此多線程與單線程的最大區(qū)別,多線程程序能在等待某個(gè)IO操作時(shí),繼續(xù)完成非這個(gè)IO的其他工作,有利于提高完成整個(gè)任務(wù)的效果和速度。此外,多線程程序與單線程程序?qū)Τ绦蛟O(shè)計(jì)也有不同的流程和結(jié)構(gòu),多線程需要考慮對(duì)靜態(tài)變量等資源的操作互鎖及程序執(zhí)行的同步問(wèn)題。
在什么情況下單線程比多線程效率高
這個(gè)問(wèn)題需要根據(jù)幾個(gè)方面綜合考慮,比如服務(wù)器配置,應(yīng)用主要做什么操作。分析如下:
第一,你的服務(wù)器主機(jī)是不是單核的,如果是的話,那么一般來(lái)說(shuō)單線程要比多線程要快,前提條件是你的io操作不特別耗時(shí),如果耗時(shí)的話,那么就不一定了,因?yàn)檫@段時(shí)間CPU是空閑的。
第二,是計(jì)算密集還是io密集,如果是計(jì)算密集的話,單線程要比多線程快,就比如Redis就是單線程的,基本都是操作內(nèi)存。但是如果任務(wù)可拆分,且主機(jī)支持多核,那仍然建議多線程
第三,服務(wù)器是多核的話,那么就要充分利用多線程的優(yōu)勢(shì)了,正常情況,單線程是比不上的。
希望我的回答對(duì)你有所幫助。
網(wǎng)速單線程和多線程有什么區(qū)別
網(wǎng)速單線程主要就是進(jìn)程只有一個(gè)線程,在程序執(zhí)行時(shí),所走的程序路徑按照連續(xù)順序排下來(lái),前面的必須處理好,后面的才會(huì)執(zhí)行。
多線程主要就是指一個(gè)進(jìn)程中同時(shí)有多個(gè)線程在執(zhí)行,多線程的好處是提高執(zhí)行效率但是會(huì)容易造成死鎖的情況。
為什么不同網(wǎng)絡(luò)之間傳文件很慢
傳輸文件的速度和以下因素有關(guān):
1.網(wǎng)絡(luò)硬件問(wèn)題,如網(wǎng)線質(zhì)量不好,導(dǎo)致丟包嚴(yán)重;還有網(wǎng)卡本身的速度限制——現(xiàn)在的網(wǎng)卡都支持百兆甚至千兆,基本不存在這個(gè)問(wèn)題了。
2.文件本身的問(wèn)題,比如都是百兆的文件夾,但一個(gè)文件夾里只要一個(gè)百兆的視頻,而另一個(gè)文件夾是由很幾十或上百個(gè)文件組成的應(yīng)用程序,那么單個(gè)文件的傳輸速度要明顯快些。
3.和文件傳輸方式有關(guān),直接使用系統(tǒng)自帶的復(fù)制粘貼這種單線程的操作肯定沒(méi)有使用局域網(wǎng)傳輸工具如“飛秋”這種支持多線程傳輸?shù)牟僮鱾鬏數(shù)目臁?/p>
END,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!
本文鏈接:http://m.tiantaijiaoyu.cn/kaifa/2054.html