我正在編寫一個程序,我需要在使用消息隊列的進程之間傳遞一個數組的片段(不能爲此使用共享內存......) 。這個數組的片段長度可能不一樣,所以我想知道什麼是最好的方法 - 我可以在運行時指定消息大小嗎?我知道我可以通過隊列傳遞的結構是這樣的:IPC系統V消息隊列 - 發送一個數組的塊
struct msg {
long type;
char data[N];
};
,其中N是在編譯時確定的,據我所知,我不能做這樣的事情:
struct msg {
long type;
char *data;
};
因爲內容指針將不會被複制,只有它的值...
那麼解決這個問題的最好方法是什麼?我應該選擇什麼樣的N纔能有效地工作?發送char data[1]
好嗎?我很擔心,如果很少的流程會要求大型表格,它會造成一個瓶頸,並且效率不高。我的擔憂是否有效?