社区
C++ 语言
帖子详情
关于一个多线程调用popen 的问题
qwedsazzcc
2014-09-11 02:06:33
一个程序,linux下用popen调用一个shell 去执行 ffmpeg,起初起10个线程不停的执行,几个小时没问题,但是50个线程,运行一段时间会出现程序卡住,不往下走,应该是类似线程死锁,但过了一会 ,10分钟左右,程序又会正常往下走。难道popen 或者ffmpeg会出现线程死锁的问题?如果不是 ,那应该是什么卡住程序。有大神能帮忙吗?
ps:100个线程 但是在popen这段加上互斥锁后,不在出现这个问题。
...全文
886
6
打赏
收藏
关于一个多线程调用popen 的问题
一个程序,linux下用popen调用一个shell 去执行 ffmpeg,起初起10个线程不停的执行,几个小时没问题,但是50个线程,运行一段时间会出现程序卡住,不往下走,应该是类似线程死锁,但过了一会 ,10分钟左右,程序又会正常往下走。难道popen 或者ffmpeg会出现线程死锁的问题?如果不是 ,那应该是什么卡住程序。有大神能帮忙吗? ps:100个线程 但是在popen这段加上互斥锁后,不在出现这个问题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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有关,具体不清楚
重新实现
popen
和system函数
总之,重新实现 `
popen
` 和 `system` 函数涉及多个系统
调用
的组合,包括 `fork`, `pipe`, `dup2`, `exec`, `wait` 等,以及对文件描述符的管理。这样做不仅可以定制功能,还可以优化资源使用,提升程序的安全性和...
跨平台实现异步执行命令,类似
popen
,可同时读写
总之,要实现
一个
类似
popen
但支持异步读写的跨平台功能,你需要深入理解进程间通信机制,掌握多种操作系统上的API,并熟悉
多线程
或异步编程技术。这是
一个
既挑战又有趣的任务,能帮助你提升作为C++开发者的技能水平...
linux
popen
函数
4. **并发性**:`
popen
`并不保证线程安全,因此在
多线程
环境中使用时,需要额外的同步措施。 5. **性能考虑**:`
popen
`启动的是
一个
新的进程,相比于系统
调用
,如`fork`和`exec`,可能会有更多的开销。对于性能敏感...
tcps.zip_linux 远程控制_
popen
`
popen
`函数是C语言中用于进程间通信(IPC)的一种方法,它允许
一个
进程打开
一个
进程上下文中的命令并读取或写入其标准输入或输出。在这个场景中,我们看到的`tcps.zip_linux 远程控制_
popen
`主题是关于在Linux环境...
python实现
多线程
的方式及多条命令并发执行
这样,当我们创建`ThreadImpl`对象并
调用
`start`方法时,就会启动
一个
新的线程并执行`run`方法中的代码。 2. 使用`Thread`类的实例: 在`thread-function.py`的示例中,我们没有继承`Thread`类,而是定义了
一个
函数...
C++ 语言
65,207
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章