c++ - C++中如何用pthreads或curses同时输出多个字符串到屏幕

标签 c++ string position

我在 DEV C++ 上编译我的应用程序,并使用 pthreads 库进行多线程处理。 我的主线程包括将“Hello World”打印到屏幕的开头 (0,0)。 我新创建的线程包括将“星期一”打印到屏幕中间,顶行 (0,60)。因为我使用的是 pthreads,所以它们会同时执行,这很好。但是,由于只有 1 个光标,因此一次只能打印一个。我希望它们都在它们执行的那一刻被打印出来。我用简单的 cout << "Hello World";

写到屏幕上

我是否需要某种类型的 curses 库来在它们执行的确切时间写入多个字符串?或者我可以通过标准 C++ 来完成吗?记住,我要输出 2 个东西,它一次输出一个。如何在不同坐标同时输出 2 个字符串?

最佳答案

正如 David H 在评论中所说,使用一个线程写入显示器,并有一个队列。

队列可能包含这样的一些数据:

class printing
{
 public:
   printing(int x, int y, const std::string &str);

 private:
   const std::string m_str;
   int m_x;
   int m_y;
};

std::queue<printing> print_queue;

你需要一个互斥锁或类似的东西来向队列中添加/删除东西。

std::mutex print_queue_mutex;

void add_printing(printing &pr)
{
    print_queue_mutex.lock();
    print_queue.push_back(pr);
    print_queue_mutex.unlock();
}

我会让您了解如何执行实际的“从队列打印”功能。它遵循相同的原则。

关于c++ - C++中如何用pthreads或curses同时输出多个字符串到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043788/

相关文章:

c++ - Win Mobile 5.0 无法调试和用户WiFi

c++ - 如何从 vector 打印嵌套结构对象?

java - Java 9 中紧凑字符串和压缩字符串的区别

python - 在 python 字符串模板中使用 xml 路径作为模板时出现无效占位符错误

css - 位置固定在另一个 div 内的 Div

css - 如何调整下拉菜单的位置?

c++ - boost::asio::deadline_timer 在计时器处理程序中完成 async_read() 和 async_write() 后不会过期

c++ - 在 OpenGL 太阳系中创建星星

c - 如何将指针赋值给全局变量?

css - 位置 :absolute; 的问题