当前位置:  技术问答>linux和unix

如何实现多线程下的文件锁?

    来源: 互联网  发布时间:2017-03-26

    本文导语:  我试过flock(),这个函数只是用于控制进程间的文件锁,在同一个进程下的多个线程是无效的哦。 我现在就想在同一个进程下多个线程中进行枷锁,防止另外一个线程执行写操作,该怎么办?有什么函数或者方法没? ...

我试过flock(),这个函数只是用于控制进程间的文件锁,在同一个进程下的多个线程是无效的哦。
我现在就想在同一个进程下多个线程中进行枷锁,防止另外一个线程执行写操作,该怎么办?有什么函数或者方法没?

|
其实不需要用锁呀
1.先得到文件有多大,然后创建一个此大小的下载文件, 
2.将文件映射内存的方式. open,mmap,
3.计算好每个线程下载片段的偏移量与大小.只操作自己对应线程的内存地方.(每个线程下载的片段又不会重合,所以也就不需要锁的.)


|

文件太大的话,比如上GB,那就根据此时各个线程下载片段的位置,分段映射,不用全部映射整个下载文件.

|
fcntl
进程间也是可以用的

    
 
 

您可能感兴趣的文章:

  • 如何实现一个线程组内多线程的非同不执行,即一个线程执行完毕后再执行下一个线程???
  • socket实现多文件并发传输,求助多线程实现问题?
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • **********如何根据线程的handle,来实现挂起指定线程********
  • C++实现CreatThread函数主线程与工作线程交互的方法
  • 如何实现监控线程?
  • 不用 signal,如何实现线程的休眠与唤醒
  • 怎样实现:任意一个线程终止,就终止整个进程?
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • linux下如何实现线程的启动,暂停,和退出!
  • 为什么linux没有在内核实现多线程机制‏
  • JAVA实现线程的三种方法
  • 用户态能否实现信号量机制,来提供线程间互斥和同步的功能?
  • 如何实现线程的“即时创建,即时销毁”?
  • 锁定Vector类型,使其同一时刻只能有一个线程访问,怎么实现??
  • 如何在APACHE环境下实现下载限制为单线程!
  • openmp线程实现原理
  • c# winform 关闭窗体时同时结束线程实现思路
  • 请问Runnable接口为什么能实现多线程?
  • 想写个FTP多线程下载工具但有几个实现细节问题
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 我要实现当进程打开文件时,根据文件名判断是否符合要求,符合后处理文件,再把文件返回给进程,怎么实现啊
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • linux内存文件系统ramfs实现原理
  • linux下如实现与window下的驱动器实现文件共享??
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 如何在其他盘中实现对这个盘中所有文件和文件的8映射
  • php实现文件下载简单示例(代码实现文件下载)
  • 如何用Java实现二进制文件到文本文件的相互转化?
  • 不让用户选择文件,程序指定本地文件,Java可以实现上传到服务器吗?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • interface 到底有什么用???实现接口,怎么实现??
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 怎么用Jsp实现在页面实现树型结构?
  • 通过javascript库JQuery实现页面跳转功能代码
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • boost unordered_map和std::list相结合的实现LRU算法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • qt如何实现:操作键盘实现数据的滚动?
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • ejb-ql只能 like '?%' 么?我想实现模糊查寻,想实现 like'%?%' 怎么办??
  • c语言判断某一年是否为闰年的各种实现程序代码
  • java的API中有没有既实现了Map接口又实现了List接口的类?
  • html<pre>标签自动换行实现方法
  • 编一个模拟shell实现的程序,怎么实现输入输出重定向?谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3