如何減少線程上下文切換 原

線程的上下文切換分爲讓步式上下文切換和搶佔式上下文切換。前者是指執行線程主動釋放CPU,與鎖競爭嚴重程度成正比,可通過減少鎖競爭來避免;後者是指線程因分配的時間片用盡而被迫放棄CPU或者被其他優先級更高的線程所搶佔,一般由於線程數大於CPU可用核心數引起,可通過調整線程數,適當減少線程數來避免。

前提:線程的上下文切換很好費性能。 

如何減少:

1. 減少鎖的使用,能用CAS代替鎖的情況,儘量用CAS代替。 

    不是說CAS沒有線程上下文切換,只是減少了上下文切換。在多線程競爭下,加鎖、釋放鎖會導致比較多的上下文切換和調度延時,引起性能問題。而當多 個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程並不會被掛起,而是被告知這次競爭中失敗,並可以再次嘗試(只要cpu分配給線程的時間片沒有過,就可以不斷的重試,但是時間片過後,如果還是沒有成功,也會進行上下文切換,所以說只是減少了上下文切換)。

2. 減少線程的數量 。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章