STL线程不安全的读写处理

采用队列处理消息大概是很多核心代码都会选择的方式,时间是天然的优先级,采用优先队列也无妨,主要是要采用临界区,这样的代码效率可能低一点,但是比起不用要健壮一些。

#include #include #include using namespace std; list a; // 队列 CRITICAL_SECTION cs; // 临界区 #define WRITE_THREAD 3 #define READ_THREAD 2 DWORD __stdcall write_list(LPVOID lpParam) { int w = 1000; while(true){ EnterCriticalSection(&cs); // 进入临界区 if(a.size() < 500){ // 容器容量控制在500个 a.push_back(w); } else { LeaveCriticalSection(&cs); // 容器容量达到上限,离开临界区,w不加,下一次放入 continue; } LeaveCriticalSection(&cs); // 离开临界区 w++; if(w >= 10000) w = 1000; } } DWORD __stdcall read_list(LPVOID lpParam) { while(true){ EnterCriticalSection(&cs); // 进入临界区 if(a.size() != 0){ cout << a.front() << " size " << a.size() <

你可能感兴趣的:(STL)