上発行プログラミング(三):赵歈雷——言語層のアトム、可視および可視 · ThinkerQAQ – ThinkerQAQ

0
上発行プログラミング(三):赵歈雷——言語層のアトム、可視および可視 · ThinkerQAQ – ThinkerQAQ


上発行プログラミング(三):赵歈雷——言語層のアトム、可視および可視 · ThinkerQAQ – ThinkerQAQ

ディレクトリ


この文章は ThinkerQAQ の個人ブログで、同時に著者自身によって公開されています。

0.続行

この記事では、Mutex から直接言語メモリ モデル層のルールについて説明します。


1. 3 種類の言語の集合用電視ビデオ何ですか?

1.1 Java: モニターと同期

ジャワの synchronized JLS §17.1 の規定:

「モニターのロックを保持できるのは、一度に 1 つのスレッドだけです。」

このルールはアトミック性に相当します。同時に、モニターを保持できるスレッドは 1 つだけなので、そのスレッドだけがドメインに入ることができ、同じモニターを使用する他のスレッドは待機することしかできません。

JLS §17.4.5 では次のことが規定されています。

「モニターのロック解除は、その後そのモニターがロックされる前に行われます。」

電影上海発行可視性和コマンドを使用します。

可視性のために、 の使用が発生します unlock ストーリー上、Bの電気効果が続いて発生 lock 英語のハプニング ビフォーの電子映像、A 在界区中国家対 B これ。

順番については入場順unlock → lock および B の全電位の設定電気効果は、リンク前に発生するため、それを見ることができません。 ready = true、counter = 0 このような命令違反が発生します。

1.2 Go:sync.Mutex

行く sync.Mutex 特定の Goroutine をバインドすることはなく、便利な言語を提供することもありません。sync.Mutex.Lock 規定:

「ロックがすでに使用されている場合、ミューテックスが使用可能になるまで goroutines の呼び出しはブロックされます。」

この経験則は Atomicity に当てはまります。 1 つの Goroutine は Mutex を保持しており、他の Goroutine は正視、不可受受入受作は電気 Mutex です

Go メモリ モデル – ロック

「すべてについて sync.Mutex または sync.RWMutex 変化する l n < m の場合、n を次から呼び出します。 l.Unlock() m が呼び出す前に同期されます。 l.Lock() それは戻ってくるよ。」

電影上海発行可視性和コマンドを使用します。

可視性のために,未的正視の順次前方 UnlockUnlock また同期前 B の Lock 画像、Bの設定が発生します Lock これらの関係は前に構成されているため、A が B に書き込まれて確認できます。

注文の場合、同じことが链ハンドルAのすべての安全报電影の前に行われ、Unlock → Lock と B の内部読み取り順序は電気的影響を及ぼします。 したがって、B はそれを同時に見ることはできません。 ready = true、counter = 0

1.3 CPython:threading.Lock

Python公式 threading.Lock 書類要件:

「ロック プリミティブは、ロックされているときに特定のスレッドによって所有されない同期プリミティブです。」

「すべてのメソッドはアトミックに実行されます。」

ロックはすでに取得されており、他のスレッドの acquire() 現在ダウンロードされている時間の 1 つの電気的影響は、保護ゾーンをブロックすることができます。

可視性とコマンドでは、Java や任意の旅行のメモリ モデルの結果メソッドをイメージできません。Python の定義はありません。 release → acquire の発生前関係。公式ドキュメントでは、Lock Fullline の同期プリミティブのみが扱われます。

したがって、Python プログラムは、GIL や一部のバイト コードを中断できるかどうかに依存せず、同じロック同期共有ステータスを使用する必要があります。


2. 下一篇:赵歈集是是设计的?

この電影停止在语言層:原子性、可視性、コマンド世界、一握ミューテックス

次の会議は、この语语電影電影を動電影電影電影の電影、電影電影に変える synchronized、行く sync.Mutex 和 CPython threading.Lock,ランタイムから CPU を確認できます。

Leave a Reply

Your email address will not be published. Required fields are marked *

Delta Air Lines (m1h262p) Delta Air Lines (m1h26g2) 애벗잡담잡이 애벗태양새 애벗얼가니새 애벗찌르레기 압드알쿠리참새 압딤황새 아버데어시스티콜라 이상한덤불개개비 에이버트북미덤불멧새 아비시니아캣버드 아비시니아크림슨윙 아비시니아지상코뿔새 아비시니아지상지빠귀 아비시니아긴발톱할미새 아비시니아올빼미 아비시니아파랑새 아비시니아낫부리후투티 아비시니아슬레이티딱새 아비시니아지빠귀 아비시니아왁스빌 아비시니아검은딱새 아비시니아동박새 아비시니아딱따구리 아카시아얼룩바벳 아카시아박새 아카디아딱새 아체직박구리 도토리딱따구리 아크레앤트슈라이크 아크레토디타이런트 아다마와멧비둘기 애들레이드솔새 아델리펭귄 애드미럴티매미새 아페프비둘기 아프간잡담잡이 아프간눈참새 아프리카줄무늬올빼미 아프리카검은오리 아프리카검은칼새 아프리카푸른딱새 아프리카푸른박새 아프리카넓적부리새 아프리카시트릴 아프리카목걸이멧비둘기 아프리카뜸부기 아프리카크림슨윙핀치 아프리카뻐꾸기 아프리카뻐꾸기매 아프리카뱀목가마우지 아프리카사막솔새 아프리카어두운색딱새 아프리카난쟁이물총새 아프리카에메랄드뻐꾸기 아프리카발가락물닭 아프리카파이어핀치 아프리카물수리 아프리카꾀꼬리 아프리카참매 아프리카풀올빼미 아프리카녹색비둘기 아프리카회색딱새 아프리카회색코뿔새 아프리카회색딱따구리 아프리카하리어매 아프리카매수리 아프리카산악잡담잡이 아프리카황조롱이 아프리카후투티 아프리카물꿩 아프리카습지하리어 아프리카올리브비둘기 아프리카대머리황새 아프리카검은머리물떼새 아프리카종려칼새 아프리카긴꼬리딱새 아프리카펭귄 아프리카피쿨렛 아프리카얼룩코뿔새 아프리카얼룩할미새 아프리카밭종다리 아프리카팔색조 아프리카난쟁이거위 아프리카난쟁이물총새 아프리카뜸부기 아프리카붉은눈직박구리 아프리카갈대개개비 아프리카강제비 아프리카바위 종다리류 아프리카성따오기 아프리카소쩍새 아프리카때까치딱새 아프리카은부리참새 아프리카제비물떼새 아프리카도요 아프리카저어새 아프리카점박이나무타기 아프리카검은딱새 아프리카뜸부기 아프리카지빠귀 아프리카볏도요 아프리카숲올빼미 아프리카노랑솔새 아가미왜가리 날렵한박새딱딱새