第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在一致之前如何理解發(fā)生

在一致之前如何理解發(fā)生

三國紛爭 2019-12-04 15:12:18
在JLS的第17章中,它引入了一個概念:一致性之前發(fā)生。如果對于A中的所有讀取r,其中W(r)是r看到的寫動作,則不是發(fā)生hb(r,W(r))或在A中存在一個寫w,使得wv = rv和hb(W(r),w)和hb(w,r)”以我的理解,它等同于以下詞語:...,在這種情況下,...和...都不所以我的前兩個問題是:我的理解正確嗎?“ wv = rv”是什么意思?它還給出了一個示例:17.4.5-1Thread 1 Thread 2B = 1; A = 2; r2 = A; r1 = B; 按照第一個執(zhí)行順序:1: B = 1;3: A = 2;2: r2 = A;  // sees initial write of 04: r1 = B;  // sees initial write of 0該命令本身已經(jīng)告訴我們兩個線程是交替執(zhí)行的,所以我的第三個問題是:左數(shù)是什么意思?以我的理解,r2和r1都能看到初始寫入0的原因是A和B都不是易失字段。所以我的第四個問題是:我的理解是否正確?按照第二個執(zhí)行順序:1: r2 = A;  // sees write of A = 23: r1 = B;  // sees write of B = 12: B = 1;4: A = 2;根據(jù)一致性之前發(fā)生的定義,不難理解這種執(zhí)行順序是一致性之前發(fā)生的(如果我的第一理解是正確的)。所以我的第五和第六個問題是:現(xiàn)實世界中是否存在這種情況(讀后看寫)?如果可以,您能給我一個真實的例子嗎?
查看完整描述

3 回答

?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗 獲得超4個贊

Java內(nèi)存模型定義了程序中所有動作的部分順序,這稱為巧合-before。
為了確保線程Y能夠看到動作的副作用XX無論是否發(fā)生在不同的線程中都無關(guān)緊要),在和之間定義了事前發(fā)生的關(guān)系。 如果不存在這種關(guān)系,則JVM可能會重新排序程序的操作。 現(xiàn)在,如果一個變量被多個線程共享和訪問,并且(至少)一個線程寫入了一個變量(如果讀寫未按關(guān)系發(fā)生前的順序進(jìn)行排序),那么您將進(jìn)行數(shù)據(jù)競爭。XY


在正確的程序中,沒有數(shù)據(jù)爭用。
示例是2個線程AB在鎖上同步X。
Thread A獲取鎖(現(xiàn)在Thread B被鎖定)并執(zhí)行寫操作,然后釋放lock X?,F(xiàn)在Thread B獲取鎖X和自所有的動作Thread A都完成釋放之前鎖定X,他們之前訂購的行動,Thread B收購了鎖X A(也可見Thread B)。
請注意,這發(fā)生在同一鎖上同步操作。還有就是沒有同步線程之間的關(guān)系之前發(fā)生在不同的鎖上

查看完整回答
反對 回復(fù) 2019-12-04
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊

本質(zhì)上是正確的。這樣做的主要目的是:除非您使用某種形式的同步,否則不能保證按照程序順序執(zhí)行寫操作后發(fā)生的讀操作將看到該寫操作的效果,因為語句可能已被重新定義。


在現(xiàn)實世界中是否存在這種情況(讀后見寫)?如果可以,您能給我一個真實的例子嗎?


從掛鐘的角度來看,很明顯,讀取看不到尚未發(fā)生的寫入的效果。


從程序順序的角度來看,由于如果沒有適當(dāng)?shù)耐剑P(guān)系之前發(fā)生),則可以對語句進(jìn)行重新排序,因此在程序?qū)懭胫斑M(jìn)行的讀取可能會在執(zhí)行期間看到該寫入的效果,因為它已被執(zhí)行由JVM寫入之后。


查看完整回答
反對 回復(fù) 2019-12-04
  • 3 回答
  • 0 關(guān)注
  • 382 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號