当前位置: 技术问答>linux和unix
如何实现多线程下的文件锁?
来源: 互联网 发布时间:2017-03-26
本文导语: 我试过flock(),这个函数只是用于控制进程间的文件锁,在同一个进程下的多个线程是无效的哦。 我现在就想在同一个进程下多个线程中进行枷锁,防止另外一个线程执行写操作,该怎么办?有什么函数或者方法没? ...
我试过flock(),这个函数只是用于控制进程间的文件锁,在同一个进程下的多个线程是无效的哦。
我现在就想在同一个进程下多个线程中进行枷锁,防止另外一个线程执行写操作,该怎么办?有什么函数或者方法没?
我现在就想在同一个进程下多个线程中进行枷锁,防止另外一个线程执行写操作,该怎么办?有什么函数或者方法没?
|
其实不需要用锁呀
1.先得到文件有多大,然后创建一个此大小的下载文件,
2.将文件映射内存的方式. open,mmap,
3.计算好每个线程下载片段的偏移量与大小.只操作自己对应线程的内存地方.(每个线程下载的片段又不会重合,所以也就不需要锁的.)
1.先得到文件有多大,然后创建一个此大小的下载文件,
2.将文件映射内存的方式. open,mmap,
3.计算好每个线程下载片段的偏移量与大小.只操作自己对应线程的内存地方.(每个线程下载的片段又不会重合,所以也就不需要锁的.)
|
文件太大的话,比如上GB,那就根据此时各个线程下载片段的位置,分段映射,不用全部映射整个下载文件.
|
fcntl
进程间也是可以用的
进程间也是可以用的
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。