Skip to content

Commit

Permalink
rcu: 微調整 (#1183)
Browse files Browse the repository at this point in the history
  • Loading branch information
yohhoy committed Feb 6, 2025
1 parent 9a152c2 commit c7a7c9d
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 6 deletions.
1 change: 1 addition & 0 deletions GLOBAL_QUALIFY_LIST.txt
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@
* view[link /reference/ranges/view.md]
* viewable_range[link /reference/ranges/viewable_range.md]
* <ratio>[link /reference/ratio.md]
* <rcu>[link /reference/rcu.md]
* <regex>[link /reference/regex.md]
* <scoped_allocator>[link /reference/scoped_allocator.md]
* <semaphore>[link /reference/semaphore.md]
Expand Down
2 changes: 1 addition & 1 deletion reference/rcu.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

`<rcu>`ヘッダでは、並行なデータの参照・更新を実現する[Read-Copy Update(RCU)機構](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%89%E3%83%BB%E3%82%B3%E3%83%94%E3%83%BC%E3%83%BB%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88)のための部品を定義する。

RCU同期メカニズムは、複数スレッド間で共有されるデータが高頻度で参照され、稀に更新されるようなユースケースに適している。RCU機構はスレッド間の排他制御を行わず、更新操作により不要となった古いデータを安全に解放するタイミング制御を行う
RCU同期メカニズムは、複数スレッド間で共有されるリンク方式データ構造が高頻度で参照され、稀に更新されるようなユースケースに適している。RCU機構のデータ読み取りではスレッド間の排他制御を行わず、更新操作により不要となった古いデータを安全に回収(メモリ解放)するタイミングを制御する


| 名前 | 説明 | 対応バージョン |
Expand Down
5 changes: 4 additions & 1 deletion reference/rcu/rcu_obj_base.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,11 @@ int main()
```
* std::rcu_obj_base[color ff0000]
* std::rcu_default_domain[link rcu_default_domain.md]
* retire()[link rcu_obj_base/retire.md]
* std::scoped_lock[link /reference/mutex/scoped_lock.md]

* std::jthread[link /reference/thread/jthread.md]
* exchange[link /reference/atomic/atomic/exchange.md]
* store[link /reference/atomic/atomic/store.md]

### 出力例
```
Expand Down
10 changes: 7 additions & 3 deletions reference/rcu/rcu_obj_base/retire.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ RCU機構により保護されるオブジェクト回収をスケジュール
## 適格要件
クラステンプレートパラメータ`T`がRCU保護可能(rcu-protectable)な型であること。
クラステンプレートパラメータ`T`が、下記条件を満たすRCU保護可能(rcu-protectable)な型であること。
- `rcu_obj_base<T,D>`型を唯一の基底クラスとして持つクラス型であり、かつ
- その基底は公開(public)かつ非仮想基底クラスであり、かつ
- 型`X`, `Y`の他の組合せに対して`rcu_obj_base<X, Y>`型を基底クラスとして持たない。
## 事前条件
Expand All @@ -27,8 +31,8 @@ RCU機構により保護されるオブジェクト回収をスケジュール
## 効果
- `deleter = std::move(d)`を評価し、
- RCUドメイン`dom`に対して式`deleter(addressof(x))`の評価をスケジュールする。
- `deleter =` [`std::move`](/reference/utility/move.md)`(d)`を評価し、
- RCUドメイン`dom`に対して式`deleter(`[`addressof`](/reference/memory/addressof.md)`(x))`の評価をスケジュールする。
- 評価が例外で終了した場合は未定義の動作を引き起こす。
- `dom`に対してスケジュールされた評価を呼び出す可能性がある。
Expand Down
5 changes: 4 additions & 1 deletion reference/rcu/rcu_retire.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ RCU機構により保護されるオブジェクト回収をスケジュール
## 効果
- メモリを確保する可能性がある。
- メモリ確保が`operator new`を呼び出すか否かは未規定である。
- `D`型のオブジェクト`d1``std::move(d)`で初期化する。
- `D`型のオブジェクト`d1`[`std::move`](/reference/utility/move.md)`(d)`で初期化する。
- RCUドメイン`dom`に対して式`d1(p)`の評価をスケジュールする。
- 評価が例外で終了した場合は未定義の動作を引き起こす。
- `dom`に対してスケジュールされた評価を呼び出す可能性がある。
Expand Down Expand Up @@ -97,6 +97,9 @@ int main()
* std::rcu_retire[color ff0000]
* std::rcu_default_domain[link rcu_default_domain.md]
* std::scoped_lock[link /reference/mutex/scoped_lock.md]
* std::jthread[link /reference/thread/jthread.md]
* exchange[link /reference/atomic/atomic/exchange.md]
* store[link /reference/atomic/atomic/store.md]
### 出力例
```
Expand Down
3 changes: 3 additions & 0 deletions reference/rcu/rcu_synchronize.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ int main()
* std::rcu_synchronize[color ff0000]
* std::rcu_default_domain[link rcu_default_domain.md]
* std::scoped_lock[link /reference/mutex/scoped_lock.md]
* std::jthread[link /reference/thread/jthread.md]
* exchange[link /reference/atomic/atomic/exchange.md]
* store[link /reference/atomic/atomic/store.md]

### 出力例
```
Expand Down

0 comments on commit c7a7c9d

Please sign in to comment.