Comments (3)
Thanks for the pointer to the console, hiding in plain sight. I can observe the same phenomenon in the log as you, so it superficially looks like the lock is not taking effect, but look what happens after adding a timestamp to the log:
(the timestamp is the second number, the first one is an instance ID that I added to the mutex in order to make sure that this is not some weird effect of hot reloading). Both logs a separated by ~2000 msec, as expected. This is just an output issue, it seems that the console sometimes misses updates.
from async-mutex.
HI @trajano !
Sorry, I don't seem to be able to access the console in the virtual devices linked in the snack. However, I see two problems with your code:
- You create a new instance of the mutex each time the component renders. Thus, a rerender between calls to your handlers will create a new mutex, and the async code in the handlers can interleave. You should either wrap the mutex in
useRef
or use a module-global instance. - You execute
await mutex.lock()
before your call tomutex.runExclusive()
and never release the lock. This means that the mutex stays locked, and the code wrapped inrunExclusive
never executes. This consistent with your log messages, which seem to originate fromstartMutexTxn()
(and notstartMutexTxn2
).
from async-mutex.
Thanks let me fix it I think it was a left over copy and paste. Though it was an await mutex.acquire()
not lock()
I'll revert it back to use a useRef to prevent the re-renders. Mind you with the supposed rerenders it also works (not I don't think the code rerenders anyway because I write the output to the logs).
However, like I said it's hard to replicate. Anyway closing this for now but we can probably re-open in case someone else has an issue at least the snack is there to help replicate the issue.
from async-mutex.
Related Issues (20)
- Possible to have blocking version of isLocked?
- Is there a way to implement a RWLock ontop of async-mutex? HOT 8
- Why can't I release a semaphore? HOT 2
- Please don't deprecate release() function HOT 7
- Bug: Bad execution time for large number of calls on Mutex.runExclusive HOT 3
- mutex.waitForUnlock() bug? HOT 3
- Can `waitForUnlock` be affected by `withTimeout` decorator? HOT 3
- Timing bug inside semaphore for `isLocked()` HOT 7
- what is the limit of thread safe queue limit of asyn-mutex module? HOT 1
- TypeError: objMutex.waitForUnlock is not a function HOT 3
- Communicate value to waiting code
- 0.4 Changelog HOT 1
- Would it always be `locked` if we initialize the semaphore with a negative integer? HOT 1
- Cancel specific pending lock HOT 5
- 0.4.0 not downloadable? HOT 1
- Cancel doesn't work as expected HOT 1
- DELETE ME HOT 1
- Java ReentrantLock implementation (Suggestion)
- Semaphore with negative count (suggestion)
- Request: Priority Queue HOT 4
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 async-mutex.