fascinatingly strange observation came out of writing the latest test (threadwrites) to do namedpipe interoperability testing.
main process: blocking-read on namedpipe. 5 threads: write to same named pipe
the writes NEVER return (this is with xp).
so that WOULD indicate that there IS a per-pipe mutex (and that there are bugs in nt!)
l.
main process: blocking-read on namedpipe. 5 threads: write to same named pipe
the writes NEVER return (this is with xp).
so that WOULD indicate that there IS a per-pipe mutex (and that there are bugs in nt!)
unbelievable.
turns out it's an msvcrt bug (in windows nt). if you use _beginthread() to create the 5 threads (or even just the one), the reader can block the writer(s). however if you use CreateThread(), everything's hunky-dory.
anyone want to record _that_ one as a future interoperability bug-test, be my guest! ha ha :) no, but seriously: if someone tells me it's a worthwhile thing to have as an interoperability test, i'll write one.
l.