【发布时间】:2012-06-13 04:59:40
【问题描述】:
我的多线程应用程序有问题。当在一个线程执行同步popen() 命令时 - 其他应用程序线程显着减慢。带有popen() 的线程执行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 can 的新代码,但无济于事:Correct Code - Non-blocking pipe with popen
【问题讨论】:
标签: c++ multithreading pthreads popen