優先順位のついたキューがほしい。ついでにプロセス間通信としての機能も含めて考える。
複数クライアントから単一サーバへ片方向のみ受け渡しが出来ればいい
POSIX メッセージキュー | System V メッセージキュー | 自作デバイスドライバ | 名前付きパイプ | UNIXドメインソケット | |
---|---|---|---|---|---|
使い方 | mq_open() | msgget() | open() | open() *1 | socket() |
n対1通信 | 可能 | 可能 | 可能 | 可能 *2 | 可能 |
優先順位 | つけられる | つけられるし指定も出来る | つけるように作ればできる | つけられない | つけられない |
通信相手 | いなくても可 | いなくても可 | いなくても可 | いないとダメ | いないとダメ |
selectで | 待てる*3 | 待てない *4 | 待てる | 待てる | 待てる |
キューのサイズ | 大きいし可変 | 大きいし可変 | どうでもできる | 小さい *5 | 小さい |
スクリプトからの利用 | 面倒 | perlなら簡単 | 簡単にする | 簡単 | 普通 |
そのた | CONFIG_POSIX_MQUEUE=y とか | selectが使用禁止になるのは致命的 | カーネル依存は不便 | あとでTCPとかに出来る |
細かいことは UNIXネットワークプログラミング〈Vol.2〉IPC:プロセス間通信 に全部書いてあるのでちゃんと読む