std list多线程使用
#include <iostream> #include <list> #include <thread> #include <mutex> #include <condition_variable> #include <unistd.h> std::list<int> my_list; std::mutex my_mutex; std::condition_variable my_cond; void add_element(int value) { while (1) { { std::unique_lock<std::mutex> lock(my_mutex); if (my_list.size() < 100) { my_list.push_back(value); } } usleep(10); } } void remove_element() { while (1) { // sleep(1); if (!my_list.empty()) { std::cout << my_list.size(); std::unique_lock<std::mutex> lock(my_mutex); int value = my_list.front(); my_list.pop_front(); std::cout << " Removed: " << value << std::endl; } usleep(1); } } int main() { std::cout << "start" << std::endl; std::thread t1(add_element, 1); // sleep(1); std::thread t2(add_element, 2); std::thread t3(add_element, 3); std::thread t4(remove_element); t1.join(); t2.join(); t3.join(); return 0; }
g++ list.cpp -o list -l pthread