我正在尝试运行两个线程。第一个将无限运行,另一个将在第一个上的互斥锁被清除时运行。 我不想改变代码的基本结构,比如循环应该在一个线程中。它应该是无限的。
问题是我无法处理thread2。
#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>
std::mutex myMutex;
void thread1Function() {
std::cout << "Thread 1 started." << std::endl;
for (int i = 0; i < 5; ++i) {
{
std::lock_guard<std::mutex> lock(myMutex);
std::cout << "t1" << std::endl;
}
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
std::cout << "Thread 1 finished." << std::endl;
}
void thread2Function() {
std::cout << "Thread 2 started." << std::endl;
{
std::lock_guard<std::mutex> lock(myMutex);
std::cout << "t2" << std::endl;
}
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Thread 2 finished." << std::endl;
}
int main() {
std::thread t1(thread1Function);
std::thread t2(thread2Function);
t1.join();
t2.join();
return 0;
}
这是我实现的基本代码。此代码仅将数据打印为 t2、t1、t1...,并且仅打印 t1 直到循环结束。
有人可以帮我解决这个问题吗?两个线程都必须运行。