| | |
| | | SharedMemory shm(shm_name, 1024 * 1024 * 10); |
| | | auto Avail = [&]() { return shm.get_free_memory(); }; |
| | | |
| | | offset_ptr<const void> p; |
| | | BOOST_CHECK(!p); |
| | | BOOST_CHECK(p.get() == 0); |
| | | p = 0; |
| | | BOOST_CHECK(!p); |
| | | BOOST_CHECK(p.get() == 0); |
| | | const char *str = "basic"; |
| | | p = str; |
| | | BOOST_CHECK(p); |
| | | BOOST_CHECK(p.get() == str); |
| | | p = 0; |
| | | BOOST_CHECK(!p); |
| | | BOOST_CHECK(p.get() == 0); |
| | | |
| | | auto init_avail = Avail(); |
| | | |
| | | auto BasicTest = [&](int tid, int nloop) { |
| | | auto Code = [&](int id) { |
| | | typedef ShmObject<s1000> Int; |
| | | typedef NamedShmObject<s1000> Int; |
| | | std::string name = std::to_string(id); |
| | | auto a0 = Avail(); |
| | | Int i1(shm, name); |
| | | Int i1(shm, name, eOpenOrCreate); |
| | | auto a1 = Avail(); |
| | | BOOST_CHECK_LT(a1, a0); |
| | | printf("s1000 size: %ld\n", a0 - a1); |
| | | i1->a[0] = 5; |
| | | Int i2(shm, name); |
| | | Int i2(shm, name, eOpenOrCreate); |
| | | auto a2 = Avail(); |
| | | BOOST_CHECK_EQUAL(a1, a2); |
| | | BOOST_CHECK_EQUAL(i1.data(), i2.data()); |