C++如何创建多线程,一个发送指令,一个主动读取返回
时间: 2024-12-08 19:13:46 浏览: 11
在C++中,创建多线程通常使用标准库中的`std::thread`类。你可以为每个线程提供一个函数或一个lambda表达式作为入口点,让它们并行运行。以下是一个简单的例子,展示了一个发送指令的线程和一个读取返回值的线程:
```cpp
#include <iostream>
#include <thread>
#include <future> // 使用未来对象处理异步操作
// 发送指令的线程函数
void send_command(const std::string& cmd) {
std::cout << "Sending command: " << cmd << std::endl;
// 这里模拟异步操作,实际应用中替换为真实命令发送逻辑
std::this_thread::sleep_for(std::chrono::seconds(2));
}
// 主动读取返回的线程函数
void read_response() {
std::cout << "Reading response..." << std::endl;
// 这里同样模拟异步操作,实际应用中替换为接收返回数据逻辑
std::future<int> future = std::async(std::launch::async, []() -> int { return 42; });
try {
auto result = future.get();
std::cout << "Received response: " << result << std::endl;
} catch (std::exception& e) {
std::cerr << "Error reading response: " << e.what() << std::endl;
}
}
int main() {
std::thread sender(send_command, "Command example");
std::thread reader(read_response);
// 等待两个线程完成
sender.join(); // 等待发送线程结束
reader.join(); // 等待读取线程结束
return 0;
}
```
在这个例子中,`send_command`线程负责发送命令,而`read_response`线程通过`std::async`异步地启动一个计算任务,并获取其结果。请注意,在实际应用中,你需要替换这些示例中的等待和处理部分,以便适应你的具体需求。
阅读全文