我有一个被无数次调用的Linux进程,我需要使该进程尽可能快.
问题是我必须在两次调用之间维护一个状态(从上一次调用中加载数据并为下一个调用存储数据),而无需运行另一个进程/守护程序.
您能建议快速的方法吗?我知道我可以将文件用于I / O,并且出于明显的性能原因,我希望避免使用它.我应该(可以吗?)创建一个命名管道以从中进行读写操作,从而避免使用实际的磁盘I / O?
解决方法:
管道不适用于此.如果您绝对确定文件太慢,请使用posix shared memory或posix message queue-应该首先测试.
在共享内存的情况下,您的程序使用shm_open()创建该段(如果该段不存在)或打开它(如果存在).您mmap()内存,进行任何更改,然后退出.只有在知道不再调用程序并且不再需要共享内存时,才使用shm_unlink().
使用消息队列,只需设置队列.您的程序读取队列,进行任何更改,写入队列并退出.当您不再需要队列时,请使用Mq_unlink().
两种方法都具有内核持久性,因此您在重新启动时会丢失共享内存和队列.