2009-10-12 135 views

回答

1

一個解決辦法是增加消息隊列的MSGMNI系統範圍最大數量:政策依賴(在Linux上,這個限制可以被讀取,並通過的/ proc/sys目錄/內核/ msgmni時修改)。

0

這些持久性資源分配的問題(有一個類似與共享內存)是爲什麼系統V的API通常被認爲是過時。在這種情況下,您是否考慮過使用unix域套接字或FIFO而不是消息隊列?那些出現在文件系統中,並且可以在不再使用像rm這樣的工具時被「清理」。

1

您可以使用mq_setattr更改O_NONBLOCK的消息隊列屬性。 然後通過讀取所有消息,直到返回值表示隊列是空的空隊列。 現在回退舊的屬性。

該方法不是優化運行時間,但它避免了關閉和打開消息隊列的需要。