Упрощение цикла с проверкой условия. C++

Начинаю вспоминать плюсы, есть ли у вас идеи как это упросить функцию читателя в пару строк? Просьба минусовать аргументированно. UPD выложен полный код с учетом комментариев.

#include <iostream>
#include <thread>
#include <vector>
#include <locale.h>

//буфер в который записывается сообщение
std::vector<char> message;
//индикатор готовности сообщения
short ready = 0;

//функция писателя
void writerAction(void) {
    std::string temp = "textMessage";
    for (int i = 0; i < temp.length(); i++) {
        message.push_back(temp[i]);
    }
    ready = 1;
}


//функция читателя (если сообщение написано, оно выводится, иначе повтор проверки условия)
void readerAction(void) {
    while (true) {
        if (!ready) {
            continue;
        }
        else {
            std::cout << "Сообщение: ";
            for (int i = 0; i < message.size(); i++) {
                std::cout << message[i];
            }
            std::cout << std::endl;
            break;
        }
    }
}

int main()
{
    setlocale(LC_ALL, "Russian");

    //поток писателя (writer.get_id() покажет ид)
    std::thread writer(writerAction);

    //поток читателя
    std::thread reader(readerAction);

    //завершение работы потоков (обязательно)
    writer.join();
    reader.join();

    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Вообще-то

void readerAction(void) 
{
    while (!ready);
    std::cout << "Сообщение: ";
    for (int i = 0; i < message.size(); i++) std::cout << message[i];
    std::cout << std::endl;
}

Но у вас ready точно объявлена как volatile?

В любом случае такой "процессоропожирающий" подход представляется не лучшим решением...

→ Ссылка