問題タブ [rwlock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - この rwLock の実装に何か問題がありますか?
私のプログラムはデッドロックしています。なぜなら、デバッガーで実行しても動かないことを考えると、私の最初の疑いは私のrwLockです。標準ライブラリのみを使用したかったので、独自のバージョンを作成しました- -rwLock は C++17 まで含まれていないと思います。これは私が通常行うようなことではありません。
rust - メソッドから独立して RWLockReadGuard を返す
タイプのオブジェクトがあります
そして、私はある種の参照を取ることになっているメソッドを持っていますSessionData
Rocket (Rust の Web フレームワーク) を使用していますが、Rocket によって呼び出されるため、メソッドを直接呼び出すことはできません。ただし、ハンドラーに渡されるオブジェクトを作成する実装を提供できます。次のようになります。
RwLock
ハンドラーに既にロックされているオブジェクトを渡す必要があるため、直接返すことは避けたいと思います。ただし、どちらもスコープ外になる にRwLockReadGuard
依存しているため、参照または を返すことはできません。RwLock
Arc<RwLock<SessionData>>
代わりに、 を含み、このロックへのロック ガードを含み、オブジェクトへの参照解除を行う、ある種の自己完結型を作成しようとしていSessionData
ます。
これまでのところ、次のいくつかの組み合わせを試しました。
- とを含む
Session
オブジェクトArc<RwLock<SessionData>>
RwLockReadGuard<SessionData>
- owning-refライブラリの
Arc<RwLock<SessionData>>
およびを含むオブジェクト。RwLockReadGuardRef<SessionData>
- owning-refライブラリの
OwnedHandle
型を使用するオブジェクト。
しかし、やりたいことができておらず、いろいろな一生の借金問題などにぶつかっています。
それが指しているオブジェクトへのロックとロックガードの両方を含む一種の自己完結型の「ハンドル」のようなオブジェクトを作成することはまったく可能ですか?
これは似ていますが、ミューテックスの下にある値のサブ値への参照を返す方法で説明されている状況とは少し異なります。. そこでは、 はMutexGuardRef
内部的に に依存しており、 (または) が範囲外になるMutex
と存在できません。同様の動作を実現するには、my を含む構造体を渡してから、メソッド内でロックを行う必要があります。これで問題ありませんが、さらに一歩進んで、独立していて として機能する構造体を渡して、手動でロックする必要がなくなるかどうか疑問に思っています。Mutex
MyStruct
RwLock
RwLockGuard
RwLock
基本的に、のロックをクライアントから値のプロバイダーに移動したいと考えています。