[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通信(共有メモリ)
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通信(要求応答)
using namespace irlab::shm;
ServiceServer<int, int> server("calc_service");
if (server.hasRequest()) {
int request = server.getRequest();
int response = request * 2;
server.sendResponse(response);
}
ServiceClient<int, int> client("calc_service");
client.sendRequest(21);
if (client.waitForResponse(1000000)) {
int result = client.getResponse();
std::cout << "計算結果: " << result << std::endl;
}
🎨 通信方式の選び方
用途 | 推奨ライブラリ | 特徴 | 適用例 |
リアルタイムデータ配信 | 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ファイルをご確認ください。
次のステップ: 📖 はじめにで基本概念を学びましょう!