Консоль C++ с возможностью параллельного вывода/ввода

Я пытаюсь создать простой проект с «интерактивной консолью» (может быть, неправильный термин), где я могу в основном безопасно вводить и выводить данные на экран одновременно. Я пытался использовать программу GNU Readline, потому что думал, что она поможет мне достичь моих целей, но пока мне с ней не везло.

Пример программы ниже:

#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <thread>
#include <iostream>
#include <chrono>

int main()
{
    // Configure readline to auto-complete paths when the tab key is hit.
    rl_bind_key('\t', rl_complete);

    std::thread foo([]() {
        for (;;) {
            std::cout << "hello world " << std::endl;
            std::this_thread::sleep_for(std::chrono::seconds(1));
        }
    });

    for(;;) {
        // Display prompt and read input
        char* input = readline("prompt> ");

        // Check for EOF.
        if (!input)
            break;

        // Add input to readline history.
        add_history(input);

        // Do stuff...

        // Free buffer that was allocated by readline
        free(input);
    }
    return 0;
}

Мой желаемый результат был бы

hello world
hello world
hello world
... keeps printing every second
prompt> I have some text sitting here not being disturbed by the above "hello world" output printing out every second

Обратите внимание, мне не нужно использовать библиотеку readline, но в этом примере программы я пробовал ее.

Возможно ли что-то подобное в C/C++? Я видел, как это делается на других языках программирования, таких как Java... поэтому я думаю, что это должно быть возможно на C или C++.

Есть ли библиотеки, поддерживающие это? Я искал Google в течение 2 часов или около того, и мне не удалось найти что-то, что я описал выше.

Спасибо.


person MasterGberry    schedule 30.03.2019    source источник
comment
Если я понимаю ваши цели, вам следует обратиться к ncursesбиблиотеке и HOWTO по программированию NCURSES   -  person David C. Rankin    schedule 30.03.2019
comment
(Почти) подход только на С++: SO: ввод-вывод в параллельной программе.   -  person Scheff's Cat    schedule 30.03.2019
comment
@DavidC.Rankin это невозможно сделать без создания окна для приложения?   -  person MasterGberry    schedule 30.03.2019