我有一个被无数次调用的Linux进程,我需要使该进程尽可能快。

问题是我必须在两次调用之间维护一个状态(从上次调用中加载数据并将其存储为下一个调用),而无需运行另一个进程/守护程序。

您能建议快速的方法吗?我知道我可以将文件用于I/O,并且出于明显的性能原因,我希望避免使用它。我应该(可以吗?)创建一个命名管道以从中进行读写操作,从而避免使用实际的磁盘I/O?

最佳答案

管道不适用于此。如果您完全确定文件太慢,请使用posix shared memoryposix message queue-应该首先进行测试。

在共享内存的情况下,您的程序将使用shm_open()创建该段(如果该段不存在)或将其打开。您mmap()内存,进行任何更改,然后退出。仅当知道不再调用程序并且不再需要共享内存时,才使用shm_unlink()。

使用消息队列,只需设置队列。您的程序读取队列,进行任何更改,写入队列并退出。当您不再需要队列时,请使用Mq_unlink()。

两种方法都具有内核持久性,因此您在重新启动时会丢失共享内存和队列。

08-05 16:14