PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   系統組件 (https://www.pcdvd.com.tw/forumdisplay.php?f=19)
-   -   請問線程是什麼? (https://www.pcdvd.com.tw/showthread.php?t=1152451)

aya0091 2018-11-16 11:18 AM

引用:
作者sai
的確簡單明瞭。

本人非相關科系。想再請教CPU在做哪些事屬於端盤子,做哪些事屬於做計算?

我覺得用火車站來舉例更易懂

火車站有4線就好比4個核心的運輸/處理量

要提升速度就是速度加快、間隔縮短,這就是時脈提升

但如果4線火車只有4個入口,遇上尖峰時段人潮就會堵塞,降低效率

這時候如果4線火車有8個入口,就能提升效率,讓運輸/處理量更接近100%

ExtremeTech 2018-11-16 11:56 AM

https://www.chiphell.com/thread-1927901-1-1.html

這爆料不知道是真得假的?

單核4線程對WCG來說是巨大的提升

anderson1127 2018-11-17 10:46 AM

引用:
作者ExtremeTech
https://www.chiphell.com/thread-1927901-1-1.html

這爆料不知道是真得假的?

單核4線程對WCG來說是巨大的提升


4線程,就代表單一邏輯CPU就要有4條pipeline , 但如果不增加ALU等單元多這些pipeline
就沒有意義!! 再加上Data dependency 等因素 , 這4T可不是什麼好設計 ,浪費而已!!

波控 2018-11-18 09:48 PM

其實從xp時代,要如何支持多核?我就不知道了

當時還不敢用,不敢亂升級,

後來確實也有聽說,某些主機板不能用:
https://www.pcdvd.com.tw/showthread.php?t=1084023

沒問題 2018-11-19 02:44 AM

引用:
作者sai
的確簡單明瞭。

本人非相關科系。想再請教CUP在做哪些事屬於端盤子,做哪些事屬於做計算?



CUP不做端盤子,是拿來做BRA的。 :laugh: :laugh:

開玩笑的。

言歸正傳:
一個chrome開兩個分頁,就像是一個博士生兩隻手都在端盤子。
如果你開了一個chrome又開了一個IE那這樣一個博士生負責chrome,另一個負責IE。

你會想,端盤子只要高中生就行了,所以兩個都請高中生。
但如果你開一個GTA5,另一個開刺客教條。那你應該希望兩個都是電競選手。

sai 2018-11-19 06:26 AM

引用:
作者沒問題
CUP不做端盤子,是拿來做BRA的。 :laugh: :laugh:

開玩笑的。

言歸正傳:
一個chrome開兩個分頁,就像是一個博士生兩隻手都在端盤子。
如果你開了一個chrome又開了一個IE那這樣一個博士生負責chrome,另一個負責IE。

你會想,端盤子只要高中生就行了,所以兩個都請高中生。
但如果你開一個GTA5,另一個開刺客教條。那你應該希望兩個都是電競選手。



感謝說明跟指正 :ase :ase :ase

vxr 2018-11-19 11:31 AM

thread只是一個當前工作所要執行的任務...
一般程式會有一個進入點..
之後會執行一些相關操作, 例如建構子初始化之類的...
這時候會存在一個主執行緒來handle...
主執行緒在過程中, 可能會生成其他的執行緒來操作其他任務...
例如worker thread, background thread之類的..

我可以說我生成一個thread, 這個thread是用來執行某一個任務..
例如從DB撈取資料...
如果沒有生成其他thread來並行化, 那麼程式必須等待當前執行緒完成任務...

thread是可以被切換, 像是我main thread執行一般任務, 結果使用者可能觸發某個事件..
例如一個程式包含眾多使用者使用, 那如果這些使用者被目前的程式管理(觀察)..
有一個user點擊某個按鈕觸發某個事件希望能通知其他使用者..
但是我又不想按下去後, main thread要等待這個事件完成, 否則程式會整個暫時hang住(當前的user無法做任何事情)...
因此我可以透過觸發這個事件時, 生成另外一個thread去切開執行通知使用者的任務...
main thread不用進行等待, 可以做其他事情. 直到通知使用者的thread完成操作, 可能會執行所謂呼回(callback)的操作讓main thread知道有一個thread已經完成操作, 並且依據這個callback的內容執行後續操作..

thread一般是要被管理的, 否則會天下大亂...
不管是user-based也好, kernel-based也好...

OS那是歸OS的事情, 但是使用者程式那又是另一回事...
那麼使用者的應用程式怎麼管理thread?..
1. 根據API的環境管理. 沒辦法! multi-thread這塊, 老子自認做不來.
2. fuxk, 老子就是屌. 自己動手豐衣足食, 自己來管.

1 的情況可能就要看程式所使用的API多屌了.
例如透過API環境會有一個pool來管理.
這一切不用開發者做太多干預. 開發者只要把目前的thread放進這個pool就好.
沒辦法! 老子自認貧窮限制了我的想像.

2 的情況. 開發者自認自己做得來, 自己管. 那麼開發者必須了解一些事情
a.目前程式所使用的API能在這塊給他多大好處
b.開發者理解了thread的相關知識
c.開發者熟悉thread這方面的 "設計模式". 自己認為有本事做得好.
d.老子TM就是爽, 你API管我那麼多幹啥阿.

u8u8u8u8 2018-11-20 07:56 AM

這篇回文很精彩阿,以前被虐待的感覺都回來了,哈哈XD

ExtremeTech 2018-11-20 09:32 PM

引用:
作者anderson1127
4線程,就代表單一邏輯CPU就要有4條pipeline , 但如果不增加ALU等單元多這些pipeline
就沒有意義!! 再加上Data dependency 等因素 , 這4T可不是什麼好設計 ,浪費而已!!



你根本不懂World Community Grid

多出來的執行序就算對跑分效能完全沒幫助

但是對於累積運算時間的"灌水"就非常有幫助

冰的啦魔王大人 2018-11-20 10:13 PM

好了, 時間早就超過了.

....
早先就說過了, 請不要隨便更改其定義, 或是自己定義. 有疑問請去看wiki .
那已經是正姐了
.....


:think:



最簡單的辯證就是, 就算cpu 沒有 hyper-threading , 你一樣可以開 thread 來用.
:think:
故不再多做解釋


所有的時間均為GMT +8。 現在的時間是06:35 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。