併發程式設計(2)

2021-09-09 07:48:03 字數 348 閱讀 3803

作用:  private  volatile int a =0;

強制執行緒到共享記憶體中讀取資料,而不是從執行緒工作中讀取,從而使變數在多個執行緒間可見。

volatile無法保證原子性,volatile是輕量級的同步,效能比synchronized強很多,但是只是保證了效能的可見性,並不能替代synchronized的同步功能。

static  保證唯一性,但不能保證一致性   多個例項共享乙個靜態變數

volatile  保證了一致性,但不能保證唯一性,多個例項有多個volatile變數

使用atomicinteger等原子類可以保證共享變數的原子性

但是atomic類不能保證成員方法的原子性

併發程式設計2

2.自旋鎖 spinlock 3.訊號量 2.synchronizer.cpp中對應的slow enter 3.鎖膨脹 inflate也在synchronizer.cpp中 因此synchronized不是自旋鎖 2.什麼時候變成重量級鎖,是因為鎖膨脹,是可逆的,當乙個執行緒持有鎖,當另乙個也來獲取...

併發程式設計2

一台計算機上面執行著很多程序,那麼計算機是如何區分並管理這些程序服務端的呢?計算機會給每乙個執行的程序分配乙個pid號 如何檢視 windows電腦 進入cmd輸入tasklist即可檢視 tasklist findstr pid檢視具體的程序 mac電腦 進入終端之後輸入ps aux ps aux...

併發程式設計2

守護程序 守護程序也是乙個程序,可以守護著另乙個程序 乙個程序a設定為b的守護程序,當b結束時a會立刻結束自己不管任務是否執行完畢 將程序的daemon屬性設定為true時這個程序變成了守護程序,設定daemon屬性時必須在開始程序之前 程序安全 使用lock來例項化產生一把鎖,但是要保證每乙個程序...