If that particular writing thread stalls (or crashes!?), the reader thread may have to wait "forever", even though other writes are finished and waiting.
Not impossible to handle, but something to keep in mind.
That's a general issue that is always present. If one thread is in the middle of some elaborate protocol "dance" with other threads, and throws an exception out of there (or just hangs), the other threads will be affected. I see the particular issue here is fault-tolerance -- one worker fails, but others are still producing data. The area that is sensitive is just allocate the slot copy the fields in, being sure to copy the flag last. I don't expect anything to go wrong when just copying PODS from one struct to another. But perhaps I should elaborate that this "critical region" should indeed be that simple: make the record a simple struct or single pointer, not something that is elaborate to construct/copy. I'll have to remember to document that if I make this into a reusable template. TradeStation Group, Inc. is a publicly-traded holding company (NASDAQ GS: TRAD) of three operating subsidiaries, TradeStation Securities, Inc. (Member NYSE, FINRA, SIPC and NFA), TradeStation Technologies, Inc., a trading software and subscription company, and TradeStation Europe Limited, a United Kingdom, FSA-authorized introducing brokerage firm. None of these companies provides trading or investment advice, recommendations or endorsements of any kind. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.