LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1370|回复: 8

help!关于多个线程向同一文件写数据。

[复制链接]
发表于 2008-3-2 17:12:33 | 显示全部楼层 |阅读模式
源文件有10帧数据,用pthread_create创建5个线程,并且第i个线程处理第i帧和第i+5帧,i=0,1,2,3,4.每帧的处理时间不同。
另外需要将每帧的处理结果写入目标文件,即先写入第0帧的处理结果,接着第1帧的结果.......,
我的问题是:如何确保每帧处理结果按上述次序写入目标文件?

注:处理每帧所需的时间不同,而且每帧处理结果的数据大小也不同。

谢谢!
发表于 2008-3-2 22:51:38 | 显示全部楼层
你要保证时序,那么只有同步运行,就是说2等1,3等2.。。。而你又用多线程,这样有意义么?
多线程的场合是什么呢?想想吧,不是什么都用多线程都好的。至少会增加系统和应用程序负担。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-2 23:10:12 | 显示全部楼层
忘了说明,之所以用多线程,是要把创建的每个线程分别绑定到多核CPU的其中之一上。
回复 支持 反对

使用道具 举报

发表于 2008-3-3 02:18:21 | 显示全部楼层
第5綫程 pthread_join 第4綫程,第4綫程 pthread_join 第3綫程,如此類推
回复 支持 反对

使用道具 举报

发表于 2008-3-3 09:57:31 | 显示全部楼层
处理完了先在内存里缓存,最后处理完的线程负责写
回复 支持 反对

使用道具 举报

发表于 2008-3-3 11:06:12 | 显示全部楼层
这是线程同步的问题,可以用设定标记并加上互斥量的配合的方法解决,需要5个互斥量配5个标记。Window编程中有个CriticalSection类,其提供的方法可以满足你的要求,建议lz参考仿照实现linux下功能。
回复 支持 反对

使用道具 举报

发表于 2008-3-6 13:32:51 | 显示全部楼层
估计性能不如单线程来的快
回复 支持 反对

使用道具 举报

发表于 2008-3-10 15:32:56 | 显示全部楼层
建议采用x11的方案,如果处理结果数据量大的话可以采用临时文件缓存。

把问题考虑成数据处理、结果整合两个处理过程;可以另开一个线程负责结果整合,只需要在五个数据处理线程和结果整合线程之间进行同步
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-11 14:09:31 | 显示全部楼层
谢谢楼上各位!我先采用临时缓存试试看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表