当前位置: 技术问答>linux和unix
关于多线程写文件的问题,谢谢!
来源: 互联网 发布时间:2016-03-02
本文导语: 老大们,我现在在个linux下的多线程断点续传的程序,现在就是每个线程接收到就写文件并且进行了同步,发现多个线程还不如一个线程写的快,后来只接收和同步但不写文件,就比1个线程快了15-20秒,现在想请教...
老大们,我现在在个linux下的多线程断点续传的程序,现在就是每个线程接收到就写文件并且进行了同步,发现多个线程还不如一个线程写的快,后来只接收和同步但不写文件,就比1个线程快了15-20秒,现在想请教有何机制把每个线程接收到的数据写入文件中,我现在想到一个机制,就是每个线程接收到数据时写入缓冲区,然后用一个专门的线程去缓冲区读,然后再写入文件。没试过这种方法,不知道效果如何,只能试试了,渴望有经验的兄弟帮忙指点一下,不要求代码,有思想就行了,感激不尽。另外缓冲区我打算用消息队列,不知道各位有甚么建议没,先谢谢了,哈哈!
|
前段时间我就写了个这样的程序啊,我是用比较笨的方法,每个线程负责下载数据并且写入文件,主线程负责统计当前已经下载的总数据,主要是用于提示用户目前已经下载的百分比,目前可以断点续传下载百度上大部分的歌曲
|
“每个线程接收到数据时写入缓冲区,然后用一个专门的线程去缓冲区读,然后再写入文件”,这样做好啊,
写磁盘不要去用多个进程或线程了,因为磁头只有一个:-)
写磁盘不要去用多个进程或线程了,因为磁头只有一个:-)
|
你写两个线程
一个用于监听SOCKET
另外一个用于写数据
这个就是典型的生产者 消费者
一个用于监听SOCKET
另外一个用于写数据
这个就是典型的生产者 消费者