如何解决具有多生产者和单消费者的无锁批处理缓冲区,使用 c++11
我想要一个多生产者和单消费者的无锁批处理缓冲区,但我做不到。代码骨架如下。需要帮助!!
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 举报,一经查实,本站将立刻删除。