1樓:躍遷驅動器
對於多執行緒作業系統來說,執行緒是處理機排程的最小單位。
不考慮超執行緒的話,乙個處理機同一時間內只能處理乙個執行緒。
每乙個應用程式可能會有1到多個執行緒,這樣在處理機的層面是看不到應用的,通常它不需要考慮具體哪個執行緒對應於哪個應用程式。
作業系統排程執行緒時,會根據不同的策略去排程處理機執行的執行緒,常用的處理機排程演算法可以在各種作業系統書上找到。
在cmp中,各個核心應當被系統看作是平等的處理機資源。有幾個核心,系統就會一次排程幾個執行緒一起執行,這裡不能確定4個處理機處理的執行緒就對應亂辯肆於每個應用。
對於多執行緒的系統,區別你說的2種情況是沒有意義的,因為它排程的譁轎尺度不是應用程式。
對於多道程式系統來說,灶空它是用於單處理機的,目的是讓各個程式看起來是並行執行的。如果應用於多核系統的話,如果處理機比應用數少的話,還是應該輪流執行各個應用的。
什麼是多執行緒併發伺服器
2樓:網友
有多個 cpu 可用。單核機器上多執行緒的優勢不明顯。
執行緒間有共享資料。如果沒有共享資料,用模型 3b 就行。雖然我們應該把執行緒間的共享資料降到最低,但不代表沒有;
共享的資料是可以修改的,而不是靜態的常量表。如果資料不能修改,那麼可以在程序間用 shared memory,模式 3 就能勝任;
提供非均質的服務。即,事件的響應有優先順序差異,我們可以用專門的執行緒來處理優先順序高的事件。防止優先順序反轉;
latency 和 throughput 同樣重要,不是邏輯簡單的 io bound 或 cpu bound 程式;
利用非同步操作。比如 logging。無論往磁碟寫 log file,還是往 log server 傳送訊息都不應該阻塞 critical path;
能 scale up。乙個好的多執行緒程式應該能享受增加 cpu 數目帶來的好處,目前主流是 8 核,很快就會用到 16 核的機器了。
具有可**的效能。隨著負載增加,效能緩慢下降,超過某個臨界點之後急速下降。執行緒數目一般不隨負載變化。
多執行緒能有效地劃分責任與功能,讓每個執行緒的邏輯比較簡單,任務單一,便於編碼。而不是把所有邏輯都塞到乙個 event loop 裡,就像 win32 sdk 程式那樣。
3樓:靈若伊雪
優化排程可以再調高效率。佇列不要頻繁的新增,刪除節點。使用乙個全域性變數標記佇列中前多少個節點已經處理。
使用佇列節點求摸(mod)來排程執行緒處理。比如20個執行緒,0執行緒負責佇列的,0,20,40,60...的節點任務 1執行緒 1,21,41,61...
的節點任務 2執行緒 2,22,42,62...的節點任務然後,你懂了。
多核多執行緒時下,如何使多核負載均衡?
4樓:網友
多執行緒程式設計沒有處理單核多核的能力吧?至少我不清楚這個情況,一般資源競爭這塊可以設定執行緒的優先順序來解決。如果的確出現了負載不均衡的話,怎麼設計我就不清楚了,如果是我的話就把多執行緒分解成幾個多程序,程序就可以自動的分配資源了!
5樓:網友
導致負載不均,可能每個執行緒對cpu的運算要求不一樣,出現競態的話,,可以部分加鎖,,,但是小心死鎖,,,如果要向每個執行緒的利用均勻的話。。。很困難,而且,,負載不均衡,,不會影響什麼,,只是負載大了的話,,會拖慢其他任務。。
我想要學習一下多執行緒開發、分散式、負載均衡等理論, 問一下學習的流程是如何,應該看什麼方面的書。
6樓:網友
別學了 ,我直接教你吧。
多執行緒開發一般是在你需要後臺去處理一些資料,但是又不想阻止主執行緒的執行,那麼你就需要多個現執行緒去處理資料。數量不要超過cpu數目+2.. 執行緒和執行緒之間是獨立的。
都存在自己的上下文物件,執行緒最大的問題在於互斥和同步,你需要通過乙個訊號量來互斥或同步執行緒。
分散式主要應用在於資料庫和快取。已資料庫為例,我們有一臺主要的儲存伺服器,如果有一天機器壞了,資料丟失了怎麼辦?那麼就需要有其他的儲存裝置來對資料進行備份。
俗稱同步資料,保證在可以接受的時間間隔內,多臺儲存計算機上資料庫的資料是一致的,分散式主要解決容災問題。
均衡負載就是指的是乙個應用分佈在不同的計算機上,而這些各個應用其實只是做一件同樣的事,那麼假設乙個大的任務來了,就可以分為多個小任務給不同的機器去完成運算,
j**a中實現多執行緒負載平衡演算法
7樓:匿名使用者
將請求放到乙個全域性的佇列中去。每個子執行緒不斷地從隊悶悔寬前扮列中取出請求並處理請求,如果佇列中沒有請求則子執行緒等待。螞亮。
matlab:多執行緒和多核之間的差異
8樓:好程式設計師
對於採用並行程式設計模型實現的多執行緒程爛薯序,多核處理器在低負載的情空歷襪況下能很有效地提高執行效率,對於同乙個應用,如果採用序列的編鬥激程模型,
j**a web專案,如何實現負載均衡和多併發?
9樓:匿名使用者
haproxy是一款反向**伺服器工具,通過它,可以實現負載均衡。它支援雙機熱備支援虛擬主機,但其配置簡單,擁有非常不錯的伺服器健康檢查功能,當其**的後端伺服器出現故障, haproxy會自動將該伺服器摘除,故障恢復後再自動將該伺服器加入。新的引入了frontend,backend,frontend根據任意http請求頭內容做規則匹配,然後把請求定向到相關的backend.
利用haporxy實現負載均衡。
1. 利用haproxy實現負載均衡。
haproxy)——負載均衡———
安裝配置haproxy
cd /usr/local/
10樓:匿名使用者
簡單的說:前端反向**+後端server叢集。
11樓:
這個問題比較複雜,還是自己去看資料吧。
c多執行緒操作控制元件問題,C 多執行緒操作控制元件問題
一樓的答案不僅不是正解,而且還會報錯!正確的做法如下 thread th new thread new threadstart th.isbackground true 一定要標記為後臺執行緒,這樣這個執行緒才能在你的主執行緒停止後自動停止 th.start 總之一句話,繁瑣的業務操作放在非主執行緒...
c多執行緒方法控制兩個進度條,C 多執行緒方法 控制兩個進度條
最重要的是要實現非同步。其實就是你的 邏輯與介面呈現,非同步來做。互不干涉。用多執行緒吧。開條執行緒,執行你的 沒執行一次,就觸發個事件。介面就訂閱這個事件。每收到一次事件就更新一下進度條。非同步的處理。如果是 winform 那就 this.begininvoke 如果是 wpf,就 this.d...
VC 6 0多執行緒的問題
有很多方法可以實現 乙個接乙個 的依次執行。其中有乙個比較談祥簡單的方法就是設定 global variable 變數來控制。int idglobal 執行緒函式fnthread 呼叫執行緒的函式fnmyfunc int id while id idgloal do nothing do somethi...