小编Mar*_*yam的帖子

C中的快速生产者/缓慢消费者

我在C中编写了一个等待事件的程序,然后按system()功能运行外部系统命令.

while( true ){
    wait_for_event();
    system("cmd");
}
Run Code Online (Sandbox Code Playgroud)

我有一个严重的问题,这cmd是一个繁重的命令,需要几秒钟才能完成,我的应用程序在这段时间内错过了一些事件.

所以我决定把这个system非常重的函数移到另一个程序中,所以我改变了我的程序如下:

while( true ){
    wait_for_event();
    write_to_fifo("cmd");
}
Run Code Online (Sandbox Code Playgroud)

并写了另一个程序:

while(true){
    system(read_from_pipe());
}
Run Code Online (Sandbox Code Playgroud)

但它没有帮助,因为如果生产者(第一个程序)的写入速度比消费者(第二个程序)快,那么消费者会错过一些数据!

有没有办法解决这个问题?

c c++ unix linux

10
推荐指数
1
解决办法
516
查看次数

标签 统计

c ×1

c++ ×1

linux ×1

unix ×1