20 lines
947 B
ReStructuredText
20 lines
947 B
ReStructuredText
Using ``aout`` -- A Concurrency-safe Wrapper for ``cout``
|
|
=========================================================
|
|
|
|
When using ``cout`` from multiple actors, output often appears
|
|
interleaved. Moreover, using ``cout`` from multiple actors -- and thus
|
|
from multiple threads -- in parallel should be avoided regardless, since the
|
|
standard does not guarantee a thread-safe implementation.
|
|
|
|
By replacing ``std::cout`` with ``caf::aout``, actors can achieve a
|
|
concurrency-safe text output. The header ``caf/all.hpp`` also defines overloads
|
|
for ``std::endl`` and ``std::flush`` for ``aout``, but does not support the full
|
|
range of ostream operations (yet). Each write operation to ``aout`` sends a
|
|
message to a "hidden" actor. This actor only prints lines, unless output is
|
|
forced using ``flush``. The example below illustrates printing of lines of text
|
|
from multiple actors (in random order).
|
|
|
|
.. literalinclude:: /examples/aout.cpp
|
|
:language: C++
|
|
|