關於鎖的一些想法

鎖有不少種,總結目前流行的幾個作法,數據庫

    1,鎖小不鎖大,換句話說,鎖的粒度問題,相似數據庫,有表鎖和行鎖,並下降鎖的粒度,能夠顯著下降競爭。固然,鎖粒度不是越小越好,應該是鎖該鎖的數據。安全

    2,鎖寫不鎖讀,仍是數據庫,讀寫是分別加鎖的,寫的操做每每幾十倍於寫,不必將全部數據鎖住。性能

    3,鎖數據不鎖方法,例如,hashtable中的兩個線程安全實現方式,一種就是對put get 方法加鎖,put的時候,其餘線程不能put,一種是對數據段加鎖,反應的是兩種實現。後者明顯效果好於前者,前者鎖會鎖的粒度也會大於後者。線程

    4,而後,能不能避開鎖,相似的go的chan,使用chan,消息複用式的實現的chan消費者池(多協程從同一個chan中取數據),和使用chan chan 管道的管道方式的消費者池,前者會有競爭,性能會差於後者。協程

相關文章
相關標籤/搜索