| | |
| | | * ===================================================================================== |
| | | */ |
| | | #include "util.h" |
| | | #include <boost/date_time/posix_time/posix_time.hpp> |
| | | |
| | | using namespace boost::posix_time; |
| | | |
| | | BOOST_AUTO_TEST_CASE(SpeedTest) |
| | | { |
| | |
| | | }; |
| | | auto Reader = [&](int reader_id, std::atomic<bool> *run, bool isfork) { |
| | | ShmMsgQueue mq(id, shm, 1000); |
| | | auto now = []() { return steady_clock::now(); }; |
| | | auto tm = now(); |
| | | while (*run) { |
| | | MsgI msg; |
| | | BHMsgHead head; |
| | | if (mq.Recv(msg, timeout)) { |
| | | if (mq.TryRecv(msg)) { |
| | | DEFER1(msg.Release()); |
| | | // ok |
| | | tm = now(); |
| | | } else if (isfork) { |
| | | exit(0); // for forked quit after 1s. |
| | | if (now() > tm + 1s) { |
| | | exit(0); // for forked quit after 1s. |
| | | } |
| | | } |
| | | } |
| | | }; |
| | |
| | | } |
| | | }; |
| | | |
| | | int nwriters[] = {1, 2, 4}; |
| | | int nreaders[] = {1, 2}; |
| | | int nwriters[] = {1, 4, 16}; |
| | | int nreaders[] = {1, 4}; |
| | | |
| | | auto Test = [&](auto &www, auto &rrr, bool isfork) { |
| | | for (auto nreader : nreaders) { |