MCPcopy Create free account
hub / github.com/HumbleNet/HumbleNet / enterWrite

Method enterWrite

3rdparty/Amalgamate/juce_core_amalgam.cpp:12607–12630  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12605}
12606
12607void ReadWriteLock::enterWrite() const noexcept
12608{
12609 const Thread::ThreadID threadId = Thread::getCurrentThreadId();
12610 const SpinLock::ScopedLockType sl (accessLock);
12611
12612 for (;;)
12613 {
12614 if (readerThreads.size() + numWriters == 0
12615 || threadId == writerThreadId
12616 || (readerThreads.size() == 2
12617 && readerThreads.getUnchecked(0) == threadId))
12618 {
12619 writerThreadId = threadId;
12620 ++numWriters;
12621 break;
12622 }
12623
12624 ++numWaitingWriters;
12625 accessLock.exit();
12626 waitEvent.wait (100);
12627 accessLock.enter();
12628 --numWaitingWriters;
12629 }
12630}
12631
12632bool ReadWriteLock::tryEnterWrite() const noexcept
12633{

Callers 1

Calls 5

exitMethod · 0.80
enterMethod · 0.80
sizeMethod · 0.45
getUncheckedMethod · 0.45
waitMethod · 0.45

Tested by

no test coverage detected