class BroadcastMsg {
public:
BroadcastMsg(const char* msg) {
msg_ = new char[bufsize];
}
~BroadcastMsg() { delete msg_; }
const char* Get() const { return msg_; }
private:
char* msg_;
};
.....
LockFreeBroadcastQueue<BroadcastMsg> queue;
queue.Init(128, 2);
queue.Enqueue(new BroadcastMsg("The messages are shared among the listeners."));
queue.Enqueue(new BroadcastMsg("They are preserved until all the listeners read them."));
queue.Enqueue(new BroadcastMsg("They are to be deleted automatically."));
......
{
LockFreeBroadcastQueue<BroadcastMsg>::DequeueType ptr;
queue.Dequeue(0, ptr);
PrintMsgOnWindow1(ptr->Get());
queue.Dequeue(0, ptr);
PrintMsgOnWindow1(ptr->Get());
queue.Dequeue(0, ptr);
PrintMsgOnWindow1(ptr->Get());
}
......
{
LockFreeBroadcastQueue<BroadcastMsg>::DequeueType ptr;
queue.Dequeue(0, ptr);
PrintMsgOnWindow2(ptr->Get());
queue.Dequeue(0, ptr);
PrintMsgOnWindow2(ptr->Get());
queue.Dequeue(0, ptr);
PrintMsgOnWindow2(ptr->Get());
}