Pocoはc++のライブラリの一つで、boostより比較的軽量に設計されている。バージョン1.7.3を使って共有メモリの書き込み・読み出しの実装例を書いた。
読み出しでもAM_WRITE
になっているのは読み出しで先にOPENしてしまうと書き込みのほうで例外が投げられるため。
for文はrange-based for loopsを使った。
読み出し
#include <iostream> #include <Poco/SharedMemory.h> #include <Poco/Thread.h> int main() { size_t size = 10; auto sm = Poco::SharedMemory("phst_test", size, Poco::SharedMemory::AccessMode::AM_WRITE); while (true) { Poco::Thread::sleep(1000); for (const auto &p : sm) { //const auto & std::cout << int(p) << " "; //読み出し } std::cout<<std::endl; } }
書き込み
#include <iostream> #include <Poco/SharedMemory.h> #include <Poco/Thread.h> int main() { size_t size = 10; auto sm = Poco::SharedMemory("phst_test", size, Poco::SharedMemory::AccessMode::AM_WRITE); char c = 0; while (true) { Poco::Thread::sleep(1000); std::cout << int(c) << std::endl; for (auto &&p : sm) { //auto && p = c; //書き込み } c++; } }
参照