C++ 在同一台计算机中使用多个终端的多线程程序示例
C++ Multithreading program example using multiple terminals in the same computer
我是多线程编程的新手。我正在尝试使用一台笔记本电脑中的两个终端运行程序。其中,在这两个终端中,它应该注册为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 文档。无论如何,您将不得不自己对这里的主题进行一些研究,我只是想为您指出正确的方向。
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- 并发/多线程:是否可以以这种方式生成相同的输出?
- sigwait() 在多线程程序中不起作用
- 多线程程序中出现意外的内存泄漏
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 多线程比没有线程C++慢
- 具有 C++11 多线程的特征库
- 通过安装信号处理程序关闭多线程应用程序
- 成员变量在多线程 C++ 时自行更改
- C++ 在同一台计算机中使用多个终端的多线程程序示例