23 #include "common_priv.h"
32 #define DEBUG(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
34 #define DEBUG(fmt, ...)
52 : readtagchanged(false),
53 writetagchanged(false),
84 }
catch (...) {
Signal();
throw; }
95 }
catch (...) {
Signal();
throw; }
119 }
catch (...) {
Signal();
throw; }
130 }
catch (...) {
Signal();
throw; }
145 DEBUG(
"%s: (%llu -> %llu)\n", __PRETTY_FUNCTION__, (
writer ?
writer->GetPrivateTag().Key() : 0), (
reader ?
reader->GetPrivateTag().Key() : 0));
156 DEBUG(
"%s: (%llu -> %llu)\n", __PRETTY_FUNCTION__, (
writer ?
writer->GetPrivateTag().Key() : 0), (
reader ?
reader->GetPrivateTag().Key() : 0));
shared_ptr< Node > reader
virtual bool WriteBlocked()=0
void SetReaderNode(shared_ptr< Node > n)
The exception thrown when true deadlock is detected.
shared_ptr< Node > writer
virtual bool ReadBlocked()=0
void SignalWriterTagChanged()
void WriteBlock(unsigned qsize)
void SignalReaderTagChanged()
virtual void UnlockedSignalReaderTagChanged()
virtual void UnlockedSignalWriterTagChanged()
ScopeSetter(T &val_, T set)
An exception thrown when a true deadlock is detected.
void SetWriterNode(shared_ptr< Node > n)
Automatic locking on the stack.