SHM
共有メモリを用いた高速で扱いやすいプロセス間通信マネージャ
Shared Memory Based Communication Manager

[English | 日本語]

概要

**Shared Memory Based Communication Manager**は、同一PC内のプロセス間通信を超高速で実現するための包括的なC++ライブラリ集です。このライブラリは以下の3つの主要なコンポーネントから構成されています:

🧠 共有メモリベース通信ライブラリ

  • shm_pub_sub - 高速な出版者/購読者モデル通信(ブロードキャスト型)
  • shm_service - 信頼性の高いサーバー/クライアントモデル通信(要求応答型)
  • shm_action - 高機能な非同期処理通信(長時間処理対応)

📚 ドキュメント目次

初心者向けガイド

チュートリアル

詳細仕様書

参考資料

🎯 特徴

🚀 圧倒的な高速性

  • マイクロ秒レベルの超低遅延 - メモリ直接アクセスによる最高速度
  • 🎯 ゼロコピー通信 - データコピーを最小限に抑えた効率的な転送
  • 🔥 CPUキャッシュ最適化 - メモリレイアウトを考慮した設計

🔒 安全性と信頼性

  • 🛡️ スレッドセーフ - 自動的な排他制御とデッドロック回避
  • 🔐 型安全性 - C++テンプレートによる コンパイル時型チェック
  • 🚨 例外安全 - RAII設計による確実なリソース管理
  • データ整合性 - 原子操作による破損防止

🎛️ 使いやすさ

  • 🎨 直感的API - ROSライクな分かりやすいインターフェース
  • 📦 自動メモリ管理 - メモリリークを防ぐスマートポインタ設計
  • 🔧 簡単セットアップ - 複雑な設定不要、即座に利用開始
  • 🐍 多言語対応 - C++とPythonで同じAPIを提供

🏃 クイックスタート

1. 簡単なPub/Sub通信(共有メモリ)

#include "shm_pub_sub.hpp"
using namespace irlab::shm;
// 送信側
Publisher<int> pub("my_topic");
pub.publish(42);
// 受信側
Subscriber<int> sub("my_topic");
bool state;
int data = sub.subscribe(&state);
if (state) {
std::cout << "受信データ: " << data << std::endl;
}
出版/購読モデルによるトピック通信を規定するクラスの定義

2. 簡単なService通信(要求応答)

#include "shm_service.hpp"
using namespace irlab::shm;
// サーバー側
ServiceServer<int, int> server("calc_service");
if (server.hasRequest()) {
int request = server.getRequest();
int response = request * 2; // 2倍にして返す
server.sendResponse(response);
}
// クライアント側
ServiceClient<int, int> client("calc_service");
client.sendRequest(21);
if (client.waitForResponse(1000000)) { // 1秒待機
int result = client.getResponse();
std::cout << "計算結果: " << result << std::endl; // 42
}
メモリの格納方法を規定するクラスの定義

🎨 通信方式の選び方

用途 推奨ライブラリ 特徴 適用例
リアルタイムデータ配信 shm_pub_sub ⚡最高速度
📡ブロードキャスト
🔄連続データ
センサーデータ配信
画像ストリーミング
ロボット制御信号
確実なデータ交換 shm_service 🤝要求応答保証
⏰タイムアウト対応
🛡️エラーハンドリング
データベース操作
設定値取得
計算結果取得
長時間非同期処理 shm_action ⚡非同期実行
📊進捗監視
❌キャンセル機能
ファイル処理
機械学習訓練
大容量データ変換

📊 性能比較

指標 shm_pub_sub shm_service shm_action
遅延 ~1μs ~2-5μs ~2-10μs
スループット 非常に高い 高い 中程度
CPU使用率 最小 低い 中程度
メモリ使用量 最小 少ない 中程度

📞 サポート

  • 🆎 オープンソース: コントリビューション歓迎
  • 👥 コミュニティサポート: ユーザー同士の相互支援
  • 🐛 バグレポート: Issueトラッカーで報告

📄 ライセンス

Apache License 2.0 🆎

Copyright 2024 Shared Memory Communication Contributors

本ソフトウェアはApache License 2.0の下でオープンソースとして提供されています。商用利用、改変、再配布が可能です。

🛡️ ライセンスの特徴

  • 商用利用可能: 商業プロジェクトでも自由に使用
  • 改変可能: ソースコードの修正・拡張が可能
  • 再配布可能: ライセンス表示を保持して再配布可能
  • 特許保護: 貢献者の特許権が保護される

詳細はLICENSEファイルをご確認ください。


次のステップ: 📖 はじめにで基本概念を学びましょう!