diff --git a/backend/include/bs-utility.h b/backend/include/bs-utility.h index d837378..5b158fa 100644 --- a/backend/include/bs-utility.h +++ b/backend/include/bs-utility.h @@ -65,10 +65,9 @@ BlockingStringStream &BlockingStringStream::operator>>(T &val) { std::unique_lock lock(mutex); // Wait until data is available - if (!(internalStream.peek() != EOF && !is_writing)) - condition.wait(lock, [this] { - return internalStream.peek() != EOF && !is_writing; - }); + condition.wait(lock, [this] { + return internalStream.peek() != EOF && !is_writing; + }); internalStream >> val; diff --git a/backend/src/bs-utility.cpp b/backend/src/bs-utility.cpp index 2394255..d7da0d6 100644 --- a/backend/src/bs-utility.cpp +++ b/backend/src/bs-utility.cpp @@ -5,10 +5,9 @@ BlockingStringStream &BlockingStringStream::getline(std::string &str, std::unique_lock lock(mutex); // Wait until data is available - if (!(internalStream.peek() != EOF && !is_writing)) - condition.wait(lock, [this] { - return internalStream.peek() != EOF && !is_writing; - }); + condition.wait(lock, [this] { + return internalStream.peek() != EOF && !is_writing; + }); str = "$FAILED$"; std::getline(internalStream, str, delim); @@ -53,8 +52,14 @@ void debugPrint() { BookStore_ZYM::debug_Print_Mutex.unlock(); } -void BlockingStringStream::readlock() { is_writing = true; } +void BlockingStringStream::readlock() { + mutex.lock(); + is_writing = true; + mutex.unlock(); +} void BlockingStringStream::unreadlock() { + mutex.lock(); is_writing = false; + mutex.unlock(); condition.notify_all(); } \ No newline at end of file