日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
并發(fā)編程的原子性 != 事務ACID的原子性

關于原子性,很多人在多個地方都聽說過,大家也都背的很熟悉。

白沙黎族網站制作公司哪家好,找創(chuàng)新互聯!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、自適應網站建設等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯2013年至今到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯。

在事務的ACID中,有原子性的概念,在并發(fā)編程的原子性、可見性、有序性中也有原子性的概念。?

有人認為他們是一樣的,甚至很多人在說原子性的時候也都是這么說的:?

?原子性是指事務是一個不可再分割的工作單元,事務中的操作要么都發(fā)生,要么都不發(fā)生。

但是,其實,雖然都叫原子性,但是此原子性非彼原子性。

在數據庫中的原子性,確實是一個不可拆分的工作單元,要么都執(zhí)行,要么都不執(zhí)行。因為事務可以Commit、也可以Rollback。?

但是在并發(fā)編程中,一個操作是沒辦法rollback的,并且線程在執(zhí)行過程中也是有可能失敗的,失敗了是沒辦法回滾的,難道就說一個操作沒辦法保證原子性了么?

所以,在并發(fā)編程中,我們把一個或者多個操作在 CPU 執(zhí)行的過程中不被中斷的特性稱為原子性。這里的原子性是通過加鎖的方式來保證的,其實保證的就是一系列操作,不可以被拆分執(zhí)行,即執(zhí)行過程中,需要互斥排他,不能有其他線程進行執(zhí)行。

舉一個例子來說明一下這兩個原子性的區(qū)別。

Redis中的Lua腳本到底能不能保證原子性??

網上很多文章,有人說能,有人說不能。要我說,都對,也都不對。就是因為因為大家搞混了這兩個原子性的區(qū)別。

我們都知道,當我們想要在一個事務中執(zhí)行多個命令的時候,會選擇使用Lua腳本。

Redis會將一個要執(zhí)行的Lua腳本封裝成一個單獨的事務,而腳本執(zhí)行器在執(zhí)行這個事務的過程中,

如果有其他客戶端請求的時候,會把它暫存起來,等腳本處理完以后,才會再把被暫存的請求恢復執(zhí)行。

這樣就可以保證整個腳本是作為一個整體執(zhí)行的,中間不會被其他命令插入,這就是所謂的原子性中的”不可拆分”特性。

但是,如果事務執(zhí)行過程中命令產生錯誤,事務是不會回滾的,也不會影響后續(xù)命令的執(zhí)行。

也就是說,Redis保證以原子方式執(zhí)行Lua腳本,但是不保證腳本中所有操作要么都執(zhí)行或者都會滾。

那就意味著,Redis中Lua腳本的執(zhí)行,可以保證并發(fā)編程中不可再拆分的這個原子性,但是沒有保證數據庫ACID中要么都執(zhí)行要么都會滾的這個原子性。


當前文章:并發(fā)編程的原子性 != 事務ACID的原子性
標題鏈接:http://www.dlmjj.cn/article/dpiscsc.html