c++控制台中启动一个线程获取控制台输入的文本,并判断文本是否为”你好“,如果是,则执给主线程发送字符串”ok“
时间: 2024-03-18 09:43:32 浏览: 69
可以使用C++11的`<thread>`库来实现多线程。以下是一个简单的示例代码,您可以参考:
```c++
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
bool ready = false;
bool processed = false;
std::string input;
void input_thread_func() {
while (true) {
std::getline(std::cin, input);
if (input == "你好") {
std::unique_lock<std::mutex> lck(mtx);
ready = true;
cv.notify_one();
}
}
}
int main() {
std::thread input_thread(input_thread_func);
while (true) {
std::unique_lock<std::mutex> lck(mtx);
cv.wait(lck, [] { return ready; });
if (input == "你好") {
std::cout << "ok" << std::endl;
processed = true;
}
ready = false;
if (processed) {
break;
}
}
input_thread.join();
return 0;
}
```
在这个示例代码中,我们启动一个新的线程`input_thread`,用于获取用户输入的文本。当用户输入的文本为“你好”时,该线程会使用互斥锁和条件变量通知主线程。主线程在等待到用户输入了“你好”后,输出字符串“ok”,并将`processed`标志设置为`true`,以退出程序。
阅读全文