| | |
| | | BOOST_AUTO_TEST_CASE(QueueTest) |
| | | { |
| | | const int nthread = 100; |
| | | const uint64_t nmsg = 1000 * 1000 * 10; |
| | | const uint64_t nmsg = 1000 * 1000 * 100; |
| | | |
| | | SharedMemory &shm = TestShm(); |
| | | shm.Remove(); |
| | |
| | | } |
| | | |
| | | #if 1 |
| | | typedef AtomicQueue<3> Rcb; |
| | | typedef AtomicQueue<4> Rcb; |
| | | |
| | | Rcb tmp; |
| | | BOOST_CHECK(tmp.like_empty()); |
| | | BOOST_CHECK(tmp.push_back(1)); |
| | | BOOST_CHECK(tmp.push(1)); |
| | | BOOST_CHECK(tmp.tail() == 1); |
| | | BOOST_CHECK(tmp.head() == 0); |
| | | int64_t d; |
| | | BOOST_CHECK(tmp.pop_front(d)); |
| | | BOOST_CHECK(tmp.pop(d)); |
| | | BOOST_CHECK(tmp.like_empty()); |
| | | BOOST_CHECK(tmp.head() == 1); |
| | | BOOST_CHECK(tmp.tail() == 1); |
| | |
| | | auto Writer = [&]() { |
| | | uint64_t n = 0; |
| | | while ((n = nwrite++) < nmsg) { |
| | | while (!rcb->push_back(n, try_more)) { |
| | | while (!rcb->push(n, try_more)) { |
| | | // MySleep(); |
| | | } |
| | | ++writedone; |
| | |
| | | auto Reader = [&]() { |
| | | while (nread.load() < nmsg) { |
| | | int64_t d; |
| | | if (rcb->pop_front(d, try_more)) { |
| | | if (rcb->pop(d, try_more)) { |
| | | ++nread; |
| | | total += d; |
| | | } else { |