Stream thread-safety

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Yang Zhang

    Stream thread-safety

    I know that std streams are not thread-safe (i.e., output can end up
    becoming interleaved), but do they share mutable state? (At least in
    libstdc++ 4.2 on Linux kernel 2.6.x?)

    I just spent a long time tracking down a bug in my program where,
    given enough threads, eventually all cout<<int would print in hex
    rather than dec, even though I never used stream formatters. couts in
    this program are called from multiple threads, and some couts around
    the middle of my program ended up interleaved - couts before it are
    fine, and later ones end up in hex. After removing the contentious
    couts in the middle, the problem went away - no more hex.

    Could this have been an effect of using the streams from multiple
    threads? I've been searching a long time for memory bugs, but haven't
    come up with anything. Thanks in advance for any hints.
Working...