Comments (7)
is it possible using this library to either acquire a write lock or to upgrade an existing read lock?
No, and it is intended. Upgrading to write lock is a dangerous operation that may lead to dead lock. Check #236 discussion.
from dotnext.
It's a bit problematic due to overload resolution. AcquireXXX
extension methods do not clash with instance methods in AsyncReaderWriterLock
. If I add UpgradeToWriteLockAsync
extension method, it will hide instance method with the same name. If you need disposable-like object, use AsyncLock.WriteLock(AsyncReaderWriterLock, bool)
static method.
from dotnext.
As I understand it, it's just a naming issue, then? Since all the IDisposable
-returning methods are called Acquire...
, how about just following that pattern and calling it AcquireUpgradeToWriteLockAsync
? It's a bit weird, but not that much, and in the light of other similar method names, I'd say it's pretty clear.
from dotnext.
AcquireUpgradeToWriteLockAsync
contains two verbs in the beginning, which is not good.
from dotnext.
Upgrade
is also a noun: "Acquire an upgrade to a write lock".
from dotnext.
Or I can add the following overload:
static ValueTask<AsyncLock.Holder> AcquireWriteLockAsync<T>(this T obj, bool upgrade, CancellationToken token = default)
from dotnext.
Great, thanks!
By the way, is it possible using this library to either acquire a write lock or to upgrade an existing read lock? I know there is a property that indicates whether or not a read lock is currently held, but that is explicitly documented as being used to monitor state, not for synchronization purposes.
from dotnext.
Related Issues (20)
- Quorum node for a 2-node cluster
- Using Optional<T> with data validation attributes HOT 5
- `AsyncBarrier.AddParticipant()` does not work
- Cluster node status HOT 1
- DotNext vs Community toolkit
- How to use Optional<string> as query parameter? HOT 5
- Support for non-LTS .NET releases HOT 1
- Various trimming warnings in DotNext.Metaprogramming HOT 15
- Potential addition of an `OrderedDictionary<TKey, TValue>` type HOT 6
- raft leader loses leadership and the node gets stuck HOT 19
- Metaprogramming: Try-catch not catching exception HOT 2
- ask for set up workaround to make AOT works HOT 4
- Directly reference algorithm used in int sqrt HOT 3
- Not seeing expected improvement in throughput of RaftCluster.ReplicateAsync method when cluster minority is inaccessible HOT 20
- Seemingly random NullReferenceException in async state machine HOT 13
- Cache bound by weighted count HOT 1
- AsyncReaderWriterLock overload parity between Enter and Acquire HOT 1
- DotNext.Net.Cluster crash in production since I think version 5.4.0 HOT 24
- DotNext.Net.Cluster: System.ArgumentOutOfRangeException: Non-negative number required. (Parameter 'length') HOT 44
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dotnext.