線程安全的本質 多線程和單線程有什么本質區(qū)別?
多線程和單線程有什么本質區(qū)別?多線程:多線程意味著一個程序包含多個執(zhí)行流,也就是說,一個程序可以運行多個不同的線程來同時執(zhí)行不同的任務,也就是說,一個程序可以創(chuàng)建多個并行執(zhí)行流。單線程:線程是程序中的
多線程和單線程有什么本質區(qū)別?
多線程:多線程意味著一個程序包含多個執(zhí)行流,也就是說,一個程序可以運行多個不同的線程來同時執(zhí)行不同的任務,也就是說,一個程序可以創(chuàng)建多個并行執(zhí)行流。單線程:線程是程序中的執(zhí)行流。每個線程都有自己的特殊寄存器(堆棧指針、程序計數(shù)器等),但代碼區(qū)域是共享的,即不同的線程可以執(zhí)行相同的函數(shù)。多線程也是一個程序,所以線程需要占用內存,線程越多,占用的內存就越多;多線程需要協(xié)調和管理,所以需要CPU時間來跟蹤線程;線程之間共享資源的訪問會相互影響,必須解決共享資源爭用的問題;也是多線程將導致過于復雜的控制。當單個線程執(zhí)行一個程序時,它所采用的程序路徑是按連續(xù)順序排列的。前者必須處理好,后者才能執(zhí)行。例如,就像ppsspp運行一樣。例如,如果您需要處理一段圖像解碼,則單個線程必須先處理該段,然后才能處理下一段,因此速度會有點慢。多線程意味著在一個進程中有幾個相對獨立的任務,這些任務由相互競爭的CPU執(zhí)行。在多處理機環(huán)境下,它在宏觀上是并發(fā)的,但實際上是分時執(zhí)行,只是執(zhí)行時間較短。例如,運行ppsspp。為了處理一段圖像數(shù)據(jù),他可以使用一個線程來處理這段數(shù)據(jù),使用另一個線程來處理下一段數(shù)據(jù)。與單線程相比,提高了速度。
多線程和單線程有什么本質區(qū)別?
多線程和單線程的本質區(qū)別如下:
(1)多線程的出現(xiàn)并不是由于多核CPU的發(fā)明。即使現(xiàn)在有多CPU和多核硬件,也不是因為多線程CPU的運行效率高于單線程。單從CPU的運行效率來看,單任務進程和單線程的效率最高,因為CPU沒有任何進程和線程切換開銷。
](2)事實上,多線程的出現(xiàn)主要是為了解決IO設備讀寫引起的單線程程序運行阻塞問題寫入速度通常比CPU的處理速度慢。一個極端的例子是,如果需要用戶按鍵在磁盤上輸入一個數(shù)據(jù),當用戶不輸入時,單線程程序就會阻塞,而多線程程序可以在程序中播放音樂或繼續(xù)做一些除鍵盤輸入以外的工作。因此,當程序等待資源阻塞時,多線程可以提高其他資源的利用率(利用率不是效率)。
(3)因此,多線程與單線程最大的區(qū)別在于,多線程程序在等待IO操作的同時,可以繼續(xù)完成此IO以外的其他工作,有利于提高完成整個任務的效果和速度。此外,多線程程序和單線程程序在程序設計上有不同的過程和結構。多線程需要考慮靜態(tài)變量與其他資源的操作互鎖和程序執(zhí)行的同步。
CPU的線程多少對于打游戲影響大嗎?
它有影響。這取決于比賽。
有些游戲不足以進行多核優(yōu)化,四核或六核就足夠了。有些杰作擅長多核優(yōu)化,比如最近流行的《騎馬》、《斜杠2》。幾天前,我更新了多核優(yōu)化。我親自用微星飛機觀察到,在1000多人的戰(zhàn)場上,我的3700x被8核16線的40%以上使用。像這樣的3A大片還有很多。我猜八核十六線程可能是未來3A游戲多核優(yōu)化的趨勢。從最近半年的游戲測試來看,很多3A大片基本上都是在8核的時候達到了最佳幀數(shù),也就是說8核以上的效果改善不大。四核到六核再到八核是一個漸進效果的視頻,也可以在今天的頭條找到。。