【发布时间】:2015-12-17 18:14:44
【问题描述】:
我正在编写一个程序,我需要使用消息队列在进程之间传递一个数组片段(不能为此使用共享内存......)。这个数组片段的长度可能不同,所以我想知道最好的方法是什么——我可以在运行时指定消息大小吗?我知道我可以通过队列传递这样的结构:
struct msg {
long type;
char data[N];
};
其中 N 是在编译时确定的,而 AFAIK,我不能这样做:
struct msg {
long type;
char *data;
};
因为指针的内容不会被复制,只有它的值...
那么解决这个值的最佳方法是什么?我应该选择什么 N 才能让它有效地工作?发送char data[1] 好吗?我担心如果很少有进程会请求大表,则会造成瓶颈并且效率不高。我的担心有效吗?
【问题讨论】: