Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

AtomicLongArray.LazySet — Spurious Full Fence

オープン
#143 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
55/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
csharp

調査の方向性

Start with Utilities/AtomicLongArray.cs and inspect LazySet and its use from ClearCounts. Replace the full-fence approach with the shown Volatile.Write form, then run the repository's existing test suite; done means the implementation no longer calls Interlocked.MemoryBarrier while the tests pass.

索引モデルが issue の本文から書いたものです。

説明

agent enhancement

File: Utilities/AtomicLongArray.cs

The LazySet implementation (used in ClearCounts) does a plain write then calls Interlocked.MemoryBarrier() — which emits a full fence, defeating the purpose of a lazy/relaxed write. The comment in the code even acknowledges uncertainty about this. On modern x86 this is largely harmless due to TSO, but on ARM64 (e.g. AWS Graviton, Apple Silicon) a full fence is expensive and wrong for this use case. The correct modern equivalent is:

Volatile.Write(ref _counts[index], value);

Volatile.Write emits a store-release fence (half-fence) rather than a full fence, which is precisely what Java's lazySet maps to on ARM64.

主要言語
C#
スター
185
フォーク
31
PR マージ指標
30日以内にマージされた PR はありません

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

HdrHistogram/HdrHistogram.NET のほかの issue

HdrHistogram/HdrHistogram.NET の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。