关于一个多线程调用popen 的问题

qwedsazzcc 2014-09-11 02:06:33
一个程序,linux下用popen调用一个shell 去执行 ffmpeg,起初起10个线程不停的执行,几个小时没问题,但是50个线程,运行一段时间会出现程序卡住,不往下走,应该是类似线程死锁,但过了一会 ,10分钟左右,程序又会正常往下走。难道popen 或者ffmpeg会出现线程死锁的问题?如果不是 ,那应该是什么卡住程序。有大神能帮忙吗?
ps:100个线程 但是在popen这段加上互斥锁后,不在出现这个问题。
...全文
857 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuchang 2014-09-12
  • 打赏
  • 举报
回复
tty_write_lock看名字应该是向标准输出写内容时等待,popen的结果是输出到标准输出的 n_write_lock不清楚用途
码工许师傅 2014-09-12
  • 打赏
  • 举报
回复
ffmpeg通常是CPU密集的,起三五个就很耗CPU了,楼主为什么要同时起那么多? 楼主用队列缓冲一下ffmpeg请求,后台只留三五个线程执行ffmpeg任务(消费者); 请求来了只管往队列上挂(生产者)。
qwedsazzcc 2014-09-11
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
建议楼主改为多进程。
我只是多线程popen ,用shell来执行ffmpeg ,按理说是多进程来执行ffmpeg。
赵4老师 2014-09-11
  • 打赏
  • 举报
回复
建议楼主改为多进程。
qwedsazzcc 2014-09-11
  • 打赏
  • 举报
回复
卡死的时候 ffmpeg 在系统监测里看 等候频道是tty_write_lock 还有一个ffmpeg是n_write_lock 有人知道这是什么意思不?
jiuchang 2014-09-11
  • 打赏
  • 举报
回复
如果能恢复,就不是程序死锁,应该是类似资源竞争的东西导致系统变慢 可能和ffmpeg有关,具体不清楚

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧