#include #include #include using namespace boost::interprocess; int main(int argc, char * argv[]) { try { if(argc >= 2 && argv[1][0] == 's') { message_queue::remove("my_queue"); std::cout << "sender: " << GetCurrentProcessId() << std::endl; message_queue q(open_or_create, "my_queue", 3, 4); while(true) { for(int i = 0; i < 5; ++i) q.send(&i, sizeof(i), 0); int dummy; std::cout << "send done: "; if(!(std::cin >> dummy)) break; } } else { std::cout << "receiver: " << GetCurrentProcessId() << std::endl; message_queue q(open_only, "my_queue"); for(int i = 0; i < 10; ++i) { int j; size_t size; unsigned int priority; q.receive(&j, sizeof(j), size, priority); BOOST_ASSERT(size == sizeof(j)); std::cout << j << std::endl; } } } catch(const std::exception & exc) { std::cout << exc.what() << std::endl; } }