保證線程安全以是否需要同步手段分類,分為同步方案和無需同步方案。如下:
1、互斥同步。
互斥同步是最常見的一種并發(fā)正確性保障手段。同步是指在多線程并發(fā)訪問共享數(shù)據(jù)時(shí),保證共享數(shù)據(jù)在同一時(shí)刻只被一個(gè)線程使用(同一時(shí)刻,只有一個(gè)線程在操作共享數(shù)據(jù))。而互斥是實(shí)現(xiàn)同步的一種手段,臨界區(qū)、互斥量和信號量都是主要的互斥實(shí)現(xiàn)方式。因此,在這4個(gè)字里面,互斥是因,同步是果;互斥是方法,同步是目的。
2、非阻塞同步。
隨著硬件指令集的發(fā)展,出現(xiàn)了基于沖突檢測的樂觀并發(fā)策略,通俗地說,就是先進(jìn)行操作,如果沒有其他線程爭用共享數(shù)據(jù),那操作就成功了;如果共享數(shù)據(jù)有爭用,產(chǎn)生了沖突,那就再采用其他的補(bǔ)償措施。(最常見的補(bǔ)償錯(cuò)誤就是不斷地重試,直到成功為止),這種樂觀的并發(fā)策略的許多實(shí)現(xiàn)都不需要把線程掛起,因此這種同步操作稱為非阻塞同步。
3、無需同步方案。
要保證線程安全,并不是一定就要進(jìn)行同步,兩者沒有因果關(guān)系。同步只是保證共享數(shù)據(jù)爭用時(shí)的正確性的手段,如果一個(gè)方法本來就不涉及共享數(shù)據(jù),那它自然就無需任何同步操作去保證正確性,因此會有一些代碼天生就是線程安全的。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com