我的多线程应用程序有问题。当在一个线程执行同步popen()
命令时 - 其他应用程序线程显着减慢。popen()
带有execute的线程ffmpeg
,会产生高负载。
通常,其他线程执行时间为 0.0007 ms。并且在popen
使用时,一些线程正在将执行时间增加到 14-20 秒。
如何解决这个问题呢?
系统是 FreeBSD 6.4
FILE *pipe;
char buff[512];
if ( !(pipe = popen( command.c_str(), "r")) )
{ // if pipe is NULL
return false;
}
while ( fgets(buff, sizeof(buff), pipe) != NULL )
{
ptr_output->append(buff);
}
这是 popen 的新代码,但无济于事:正确的代码 - 带有 popen 的非阻塞管道