You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							1.0 KiB
						
					
					
				#include <boost/interprocess/ipc/message_queue.hpp>
 | 
						|
#include <iostream>
 | 
						|
#include <vector>
 | 
						|
#include <thread>
 | 
						|
 | 
						|
using namespace boost::interprocess;
 | 
						|
#define N 1024
 | 
						|
 | 
						|
message_queue *sub_queue(const char *name){
 | 
						|
  while (true){
 | 
						|
    try {
 | 
						|
      message_queue *mq = new message_queue(open_only, name);
 | 
						|
      return mq;
 | 
						|
    }
 | 
						|
    catch(interprocess_exception &ex){
 | 
						|
      std::this_thread::sleep_for(std::chrono::milliseconds(10));
 | 
						|
    }
 | 
						|
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
message_queue *pub_queue(const char *name){
 | 
						|
  message_queue::remove(name);
 | 
						|
  message_queue *mq = new message_queue(create_only, name, 100, N);
 | 
						|
  return mq;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
int main ()
 | 
						|
{
 | 
						|
 | 
						|
  message_queue::remove("queue_1");
 | 
						|
  message_queue::remove("queue_2");
 | 
						|
 | 
						|
  message_queue *pq = pub_queue("queue_2");
 | 
						|
  message_queue *sq = sub_queue("queue_1");
 | 
						|
  std::cout << "Ready" << std::endl;
 | 
						|
 | 
						|
  unsigned int priority;
 | 
						|
  std::size_t recvd_size;
 | 
						|
 | 
						|
  char * rcv_msg = new char[N];
 | 
						|
 | 
						|
  while (true){
 | 
						|
 | 
						|
    sq->receive(rcv_msg, N, recvd_size, priority);
 | 
						|
    assert(N == recvd_size);
 | 
						|
 | 
						|
    pq->send(rcv_msg, N, 0);
 | 
						|
  }
 | 
						|
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 |