The example code from core.sync.rwmutex seems bugged. After copying it
I added an import for core.sync.rwmutex, and moved the executions of
runTest into...well:
void main()
{ runTest(ReadWriteMutex.Policy.PREFER_READERS);
runTest(ReadWriteMutex.Policy.PREFER_WRITERS);
}
Then I tried to compile it. I got the following error messages:
test3.d(36): Error: class core.sync.rwmutex.ReadWriteMutex member
m_commonMutex is not accessible
test3.d(38): Error: class core.sync.rwmutex.ReadWriteMutex member
m_numQueuedReaders is not accessible
test3.d(39): Error: class core.sync.rwmutex.ReadWriteMutex member
m_numQueuedWriters is not accessible
Checking out the documentation, I don't see that they SHOULD be
accessible, so I think the compiler's correct, and the example is wrong.
P.S.: Does anyone have a good working example of rwmutex? I'm trying
to build a hash table that is write accessible from one thread, and
readable from anywhere, and this looked like the best way to do
it...except that when I start to figure out how to use it I get errors.
Also does anyone have any examples of two directional communication
between two particular threads (a bit more than just yes/no) in the
presence of multiple other threads, so that when a thread asks another
for information, only that other thread is allowed to reply? Perhaps
that's a better way to implement the shared-read hash table. (I'd like
to use std.concurrency, but I can't figure out how one is supposed to
manage specific inter-thread communications.)
--
Charles Hixson