国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

PHP使用redis實現(xiàn)自旋鎖 分布式鎖用zookeeper還是redis好?

分布式鎖用zookeeper還是redis好?1. 無法重新進入2。沒有本地鎖,并發(fā)性能會很差。它不用于并發(fā)鎖爭用較多的場景。本地鎖沒有自旋3。不考慮鎖等待排序。redis很難實現(xiàn),可以通過redis

分布式鎖用zookeeper還是redis好?

1. 無法重新進入

2。沒有本地鎖,并發(fā)性能會很差。它不用于并發(fā)鎖爭用較多的場景。本地鎖沒有自旋

3。不考慮鎖等待排序。redis很難實現(xiàn),可以通過redis的列表實現(xiàn),但是列表下的每個子節(jié)點都沒有超時。Redis也不能執(zhí)行模糊查詢鍵*

所以當我們遇到性能瓶頸時,最好通過zookeeper來實現(xiàn),我們離線的常常無法注冊

zookeeper原則是臨時節(jié)點

自旋鎖)

自旋鎖有點像互斥鎖,但自旋鎖不會導致呼叫者睡眠。如果一個自旋鎖被另一個執(zhí)行單元持有,調(diào)用者總是在那里循環(huán),看它是否被持有

自旋鎖的持有者是否已經(jīng)釋放了鎖,因此得名“自旋”。它的功能是解決資源的互斥使用問題。由于自旋鎖不會導致調(diào)用者睡眠,所以自旋鎖的效率比互斥鎖高很多。雖然它的效率高于互斥鎖,但它也有一些缺點:1。自旋鎖總是占用CPU。它運行所有的時間-自旋沒有得到鎖,所以它占用CPU。如果不能在短時間內(nèi)獲得鎖,無疑會降低CPU效率。

2. 使用自旋鎖時,可能會導致死鎖。遞歸調(diào)用時,可能導致死鎖。調(diào)用其他一些函數(shù)也可能導致死鎖,例如copyuutouuser()、copyufromuuser()、kmalloc()等,因此使用自旋鎖要謹慎。只有當內(nèi)核是搶占式或SMP時,才真正需要自旋鎖。在單CPU非搶占式內(nèi)核中,自旋鎖的操作為空。旋轉(zhuǎn)鎖適用于鎖用戶在短時間內(nèi)保持鎖。

互斥:線程將切換上下文,搶占CPU并將信號從休眠發(fā)送到運行。

自旋鎖:線程總是在運行(lock> unlock),死循環(huán)檢測鎖標志位,機制并不復雜。

互斥鎖是一種睡眠等待鎖。例如,在雙核機器上,有兩個線程(線程a和線程b),分別在core0和

core1上運行。假設線程a希望通過pthreadmutexLock操作來獲得關(guān)鍵區(qū)域的鎖。此時,鎖由線程B持有,那么線程a將被阻塞

這是毫無疑問的,因為線程鎖定是資源密集型的

!那么,如何避免鎖的性能下降呢?

1、從業(yè)務上避免大量鎖結(jié)構(gòu)

!2. 使用ThreadLocal,可以保證每個線程中的數(shù)據(jù)不會互相污染

!3. 如果讀多寫少,請使用讀寫鎖

!4. 自旋鎖將挑戰(zhàn)CPU,盡管它是一個線程時間很少的鎖

!5. 鎖的粒度應該盡可能小:可以在方法中的鎖不應該占用整個方法