C++ 在同一台计算机中使用多个终端的多线程程序示例

C++ Multithreading program example using multiple terminals in the same computer

本文关键字:终端 多线程 程序 计算机 一台 C++      更新时间:2023-10-16

我是多线程编程的新手。我正在尝试使用一台笔记本电脑中的两个终端运行程序。其中,在这两个终端中,它应该注册为user1和user2,并且在2个程序开始运行之前,其中一个应该等待另一个使用"thread"或"pthread"(我不知道区别)。如果用户 1 将向终端 1 输入任何消息,则还应在终端 2 中向用户 2 显示该消息。而且我不知道如何启动代码,即使对线程进行了如此多次的研究。请帮忙。提前谢谢你。

#include <string>
#include <iostream>
#include <thread>
using namespace std;
void msg1(string msg) {
    cout << "user1 says: " << msg << endl;
}
void msg2(string msg) {
    cout << "user2 says: " << msg << endl;
}
int main() {
    string message1, message2;
    cin >> message1;
    thread t1(msg1, message1);
    t1.join();
    cin >> message2;
    thread t2(msg2, message2);
    t2.join();
    return 0;
}

您试图一次实现太多目标,使用线程和使用多个终端。

后者很简单,如果你只需要输出:只需将内容写入文件并在终端中运行tailf filename,它遵循文件的内容。例如,您可以使用std::fstream来保持熟悉的std::cout界面。

如果您需要输入,事情会变得更加复杂。在这种情况下,您需要在终端窗口和程序之间打开双向连接。通信通道将是例如TCP或一些本地传输。使用 TCP,您可以简单地使用 telnet 连接到程序。

关于线程,只需阅读有关它们的任何随机C++ 11 教程。您还可以查看标准线程源自的 Boost.Thread 文档。无论如何,您将不得不自己对这里的主题进行一些研究,我只是想为您指出正确的方向。