问题描述
我想要一个多生产者和单消费者的无锁批处理缓冲区,但我做不到。代码骨架如下。需要帮助!!
class MyBatch{
public:
atomic<bool> consumer_flag{flase};
public:
void push(char* data,uint32 data_len){
while(cur_pos.load() + data_len >= max_buffer_size){
consumer_flag.store(true);
//and othres can use consumeAllBatch() to consume the whole batch data
}
memcpy(buffer + cur_pos.load(),data,data_len);
cur_pos += data_len;
};
char* consumeAllBatch(){
cur_pos.store(0);
};
private:
char* buffer;
atomic<uint32> cur_pos{0};
uint32 max_buffer_size{1<<16};
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)