| | |
| | | #define UTIL_W8A0OA5U |
| | | |
| | | #include "bh_util.h" |
| | | #include "shm.h" |
| | | #include "topic_node.h" |
| | | #include <boost/date_time/posix_time/posix_time.hpp> |
| | | #include <boost/noncopyable.hpp> |
| | | #include <boost/test/unit_test.hpp> |
| | | #include <boost/timer/timer.hpp> |
| | |
| | | #include <thread> |
| | | #include <vector> |
| | | |
| | | using namespace boost::posix_time; |
| | | inline ptime Now() { return second_clock::universal_time(); }; |
| | | |
| | | using namespace std::chrono_literals; |
| | | using namespace std::chrono; |
| | | |
| | | template <class D> |
| | | inline void Sleep(D d, bool print = true) |
| | | { |
| | | if (print) { |
| | | printf("sleep for %ld ms\n", std::chrono::duration_cast<std::chrono::milliseconds>(d).count()); |
| | | } |
| | | std::this_thread::sleep_for(d); |
| | | } |
| | | |
| | | typedef std::function<void(void)> FuncVV; |
| | | |
| | |
| | | public: |
| | | ~ThreadManager() { WaitAll(); } |
| | | template <class T, class... P> |
| | | void Launch(T t, P... p) { threads_.emplace_back(t, p...); } |
| | | void Launch(T &&t, P &&...p) { threads_.emplace_back(std::forward<decltype(t)>(t), std::forward<decltype(p)>(p)...); } |
| | | void WaitAll() |
| | | { |
| | | for (auto &t : threads_) { |
| | |
| | | TopicNode(shm), id_(id) { Init(); } |
| | | void Init() |
| | | { |
| | | MsgRegister reg; |
| | | reg.mutable_proc()->set_proc_id(id_); |
| | | ProcInfo proc; |
| | | proc.set_proc_id(id_); |
| | | MsgCommonReply reply_body; |
| | | |
| | | if (!Register(reg, reply_body, 1000)) { |
| | | if (!Register(proc, reply_body, 1000)) { |
| | | printf("node %s register failed\n", id_.c_str()); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | bhome_shm::SharedMemory &TestShm(); |
| | | |
| | | #endif // end of include guard: UTIL_W8A0OA5U |