From: Marco Costalba Date: Wed, 29 Aug 2012 11:28:59 +0000 (+0200) Subject: Convert to sync_cout and sync_endl X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=0a003d3ba1e3082132606d06159693aaa805a138 Convert to sync_cout and sync_endl Serialize access to std::cout all over the code. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/bitboard.cpp b/src/bitboard.cpp index e3fc93cc..639ef3f0 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -23,6 +23,7 @@ #include "bitboard.h" #include "bitcount.h" +#include "misc.h" #include "rkiss.h" CACHE_LINE_ALIGNMENT @@ -137,6 +138,8 @@ Square msb(Bitboard b) { void Bitboards::print(Bitboard b) { + sync_cout; + for (Rank rank = RANK_8; rank >= RANK_1; rank--) { std::cout << "+---+---+---+---+---+---+---+---+" << '\n'; @@ -146,7 +149,7 @@ void Bitboards::print(Bitboard b) { std::cout << "|\n"; } - std::cout << "+---+---+---+---+---+---+---+---+" << std::endl; + std::cout << "+---+---+---+---+---+---+---+---+" << sync_endl; } diff --git a/src/position.cpp b/src/position.cpp index 9be0fe60..7709fdd2 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -363,6 +363,8 @@ void Position::print(Move move) const { string brd = twoRows + twoRows + twoRows + twoRows + dottedLine; + sync_cout; + if (move) { Position p(*this); @@ -373,7 +375,7 @@ void Position::print(Move move) const { if (piece_on(sq) != NO_PIECE) brd[513 - 68*rank_of(sq) + 4*file_of(sq)] = PieceToChar[piece_on(sq)]; - cout << brd << "\nFen is: " << to_fen() << "\nKey is: " << st->key << endl; + cout << brd << "\nFen is: " << to_fen() << "\nKey is: " << st->key << sync_endl; } diff --git a/src/search.cpp b/src/search.cpp index 3309947e..1ba95467 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -47,8 +47,6 @@ namespace Search { } using std::string; -using std::cout; -using std::endl; using Eval::evaluate; using namespace Search; @@ -237,8 +235,8 @@ void Search::think() { if (RootMoves.empty()) { - cout << "info depth 0 score " - << score_to_uci(pos.in_check() ? -VALUE_MATE : VALUE_DRAW) << endl; + sync_cout << "info depth 0 score " + << score_to_uci(pos.in_check() ? -VALUE_MATE : VALUE_DRAW) << sync_endl; RootMoves.push_back(MOVE_NONE); goto finalize; @@ -272,7 +270,7 @@ void Search::think() { << " time: " << Limits.time[pos.side_to_move()] << " increment: " << Limits.inc[pos.side_to_move()] << " moves to go: " << Limits.movestogo - << endl; + << std::endl; } Threads.wake_up(); @@ -301,7 +299,7 @@ void Search::think() { StateInfo st; pos.do_move(RootMoves[0].pv[0], st); - log << "\nPonder move: " << move_to_san(pos, RootMoves[0].pv[1]) << endl; + log << "\nPonder move: " << move_to_san(pos, RootMoves[0].pv[1]) << std::endl; pos.undo_move(RootMoves[0].pv[0]); } @@ -314,8 +312,8 @@ finalize: pos.this_thread()->wait_for_stop_or_ponderhit(); // Best move could be MOVE_NONE when searching on a stalemate position - cout << "bestmove " << move_to_uci(RootMoves[0].pv[0], Chess960) - << " ponder " << move_to_uci(RootMoves[0].pv[1], Chess960) << endl; + sync_cout << "bestmove " << move_to_uci(RootMoves[0].pv[0], Chess960) + << " ponder " << move_to_uci(RootMoves[0].pv[1], Chess960) << sync_endl; } @@ -401,7 +399,7 @@ namespace { // Send full PV info to GUI if we are going to leave the loop or // if we have a fail high/low and we are deep in the search. if ((bestValue > alpha && bestValue < beta) || SearchTime.elapsed() > 2000) - cout << uci_pv(pos, depth, alpha, beta) << endl; + sync_cout << uci_pv(pos, depth, alpha, beta) << sync_endl; // In case of failing high/low increase aspiration window and // research, otherwise exit the fail high/low loop. @@ -434,7 +432,7 @@ namespace { { Log log(Options["Search Log Filename"]); log << pretty_pv(pos, depth, bestValue, SearchTime.elapsed(), &RootMoves[0].pv[0]) - << endl; + << std::endl; } // Filter out startup noise when monitoring best move stability @@ -830,9 +828,9 @@ split_point_start: // At split points actual search starts from here Signals.firstRootMove = (moveCount == 1); if (thisThread == Threads.main_thread() && SearchTime.elapsed() > 2000) - cout << "info depth " << depth / ONE_PLY - << " currmove " << move_to_uci(move, Chess960) - << " currmovenumber " << moveCount + PVIdx << endl; + sync_cout << "info depth " << depth / ONE_PLY + << " currmove " << move_to_uci(move, Chess960) + << " currmovenumber " << moveCount + PVIdx << sync_endl; } isPvMove = (PvNode && moveCount <= 1); diff --git a/src/uci.cpp b/src/uci.cpp index 31d0a721..c18cfc35 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -97,7 +97,7 @@ void UCI::loop(const string& args) { TT.clear(); else if (token == "isready") - cout << "readyok" << endl; + sync_cout << "readyok" << sync_endl; else if (token == "position") set_position(pos, is); @@ -112,20 +112,20 @@ void UCI::loop(const string& args) { pos.flip(); else if (token == "eval") - cout << Eval::trace(pos) << endl; + sync_cout << Eval::trace(pos) << sync_endl; else if (token == "bench") benchmark(pos, is); else if (token == "key") - cout << "key: " << hex << pos.key() - << "\nmaterial key: " << pos.material_key() - << "\npawn key: " << pos.pawn_key() << endl; + sync_cout << "key: " << hex << pos.key() + << "\nmaterial key: " << pos.material_key() + << "\npawn key: " << pos.pawn_key() << sync_endl; else if (token == "uci") - cout << "id name " << engine_info(true) - << "\n" << Options - << "\nuciok" << endl; + sync_cout << "id name " << engine_info(true) + << "\n" << Options + << "\nuciok" << sync_endl; else if (token == "perft" && (is >> token)) // Read depth { @@ -138,7 +138,7 @@ void UCI::loop(const string& args) { } else - cout << "Unknown command: " << cmd << endl; + sync_cout << "Unknown command: " << cmd << sync_endl; if (!args.empty()) // Command line arguments have one-shot behaviour { @@ -206,7 +206,7 @@ namespace { if (Options.count(name)) Options[name] = value; else - cout << "No such option: " << name << endl; + sync_cout << "No such option: " << name << sync_endl; }