我希望您能在C++中为两个线程共享一个列表。我想使用非常简单的方式,不采用FIFO或共享内存,因此我只使用互斥锁。
我已经尝试了以下方法,并且它可以工作:
我已经尝试了以下方法,并且它可以工作:
#include <string.h>
#include <mutex>
#include <iostream>
#include <thread>
#include <list>
std::list<int> myList;
std::mutex list_mutex;
void client(){
std::lock_guard<std::mutex> guard(list_mutex);
myList.push_back(4);
};
void server(){
std::lock_guard<std::mutex> guard(list_mutex);
myList.push_back(2);
};
void print(std::list<int> const &list)
{
for (auto const& i: list) {
std::cout << i << "\n";
}
};
int main(int ac, char** av)
{
std::mutex list_mutex;
std::thread t1(client);
std::thread t2(server);
t1.join();
t2.join();
print(myList);
std::cout<<"test";
return 0;
}
然后它会输出这个
24test
这个代码是可以工作的,但我不确定是否使用了相同的锁?我的主管希望我在代码中明确使用Lock/Unlock。至少我能否使用相同的互斥锁?
非常感谢你的帮助。