mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 00:56:39 +08:00
Introduce serialization of accesses to std::cout
When many threds concurrently print you need to serialize the access to std::cout to avoid output lines are intermixed with the contents of each thread. This is not strictly needed at the moment because only main thread prints out, although some ad-hoc test could trigger UCI::loop() printing while searching. Anyhow we want to lift this pretty avoidable constrain also as a prerequisite for future work. This patch just introduces the support, next one will enable the serialization. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
17
src/misc.cpp
17
src/misc.cpp
@@ -146,6 +146,23 @@ public:
|
||||
};
|
||||
|
||||
|
||||
/// Used to serialize access to std::cout to avoid multiple threads to write at
|
||||
/// the same time.
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, SyncCout sc) {
|
||||
|
||||
static Mutex m;
|
||||
|
||||
if (sc == io_lock)
|
||||
m.lock();
|
||||
|
||||
if (sc == io_unlock)
|
||||
m.unlock();
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
/// Trampoline helper to avoid moving Logger to misc.h
|
||||
void start_logger(bool b) { Logger::start(b); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user