Nếu bạn không ở trên cửa sổ hoặc nếu bạn đang triển khai một cái gì đó là nền tảng chéo trong C++, hãy thử sử dụng Hàng đợi từ thư viện ACE.
ACE_Message_Queue<ACE_MT_SYNCH> *msg_queue;
Là một mẫu từ các mẫu thư viện ACE, Sau đó, bạn có thể sử dụng Đối với việc đưa thông điệp tới hàng đợi:
ACE_NEW_RETURN (mb,
ACE_Message_Block (rb.size(),
ACE_Message_Block::MB_DATA,
0,
buffer),
0);
mb->msg_priority (ACE_Utils::truncate_cast<unsigned long> (rb.size()));
mb->wr_ptr (rb.size());
ACE_DEBUG ((LM_DEBUG,
"enqueueing message of size %d\n",
mb->msg_priority()));
// Enqueue in priority order.
if (msg_queue->enqueue_prio (mb) == -1)
ACE_ERROR ((LM_ERROR, "(%t) %p\n", "put_next"));
để nhận từ hàng đợi:
ACE_Message_Block *mb = 0;
msg_queue->dequeue_head (mb) == -1;
int length = ACE_Utils::truncate_cast<int> (mb->length());
if (length > 0)
ACE_OS::puts (mb->rd_ptr());
// Free up the buffer memory and the Message_Block.
ACE_Allocator::instance()->free (mb->rd_ptr());
mb->release();
Ưu điểm là bạn có thể thay đổi đồng bộ nguyên thủy rất dễ dàng mà không cần phải viết quá nhiều mã.
bạn có đang làm việc với win32 hoặc posix không? Nó sẽ giúp tôi làm sạch ví dụ giả nhỏ của tôi. – Nate