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

求助。。。怎样保证并发的多线程不要同时操作同一个文件?

    来源: 互联网  发布时间:2015-01-02

    本文导语:  在linux下面,怎样给文件加锁? 具体情况是这样的: 首先我并发启动了多个线程,这些线程工作的过程中有一个共同的特点:就是他们都需要读取某一个指定的文件,但是这个文件在某一个时刻只能被一个线程拥有...

在linux下面,怎样给文件加锁?
具体情况是这样的:

首先我并发启动了多个线程,这些线程工作的过程中有一个共同的特点:就是他们都需要读取某一个指定的文件,但是这个文件在某一个时刻只能被一个线程拥有,就是说当有一个线程正在读取这个文件的时候,其他线程不能对该文件操作,因该怎么做,才能保证这样呢?

谢谢!

|
你可以使用Posix互斥锁。
static pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER;//声明一个互斥锁
然后用
int pthread_mutex_lock(pthread_mutex_t *mptr);//阻塞
或int pthread_mutex_trylock(pthread_mutex_t *mptr);//非阻塞
来加锁。

int pthread_mutex_unlock(pthread_mutex_t *mptr);
来解锁。

|
封装文件读写函数。在封装的函数中加入线程互斥

|
你可以在每产生一个文件时动态生成Posix互斥锁,自己在程序中维护一个Posix互斥锁的线性表。程序根据此线性表来加锁和解锁。
当然也可以采用一些其他的方法。

|
在读写文件的时候用临界区保护。可参考:
pthread_mutex_init
pthread_mutex_lock
pthread_mutex_unlock

|
原則上這個問題属操作系统管

|
你秩序作一个模块,用一个互斥就行了,但是不同情况下,性能可能受到影响,亚看你的程序对文件的操作时间了

|
最简单的,加一个文件锁就OK啦。

    
 
 

您可能感兴趣的文章:

  • 紧急求助java多线程编程!!!!!!!!!!!!!
  • 求助,线程的回收
  • socket实现多文件并发传输,求助多线程实现问题?
  • 求助Linux下怎样查看线程状态?
  • 线程内部的errno问题求助
  • Opengl Linux多线程 求助
  • 求助多线程问题
  • 求助:Linux下线程编程的问题~~~~~~~~~~~~~~~~~~~`
  • 求助:关于单线程recv时的超时问题
  • 求助!Linux下socket编程,服务端与多线程的问题
  • ■■求助■■ 如何查看一个进程拥有的线程数量???
  • 【求助】在主线程里如何终止子线程的执行?
  • 求助!Linux多线程问题
  • 求助!!!多线程+多个epoll_wait问题
  • 求助!pthread与Win32 API线程库的对应问题
  • 【求助】如何使运行中的线程挂起?
  • 求助linux下socket多线程编程的例子(C语言写的)
  • (100分求助)用内核线程对用户进程操作(大侠/虾们出手了)
  • 求助!关于多线程下数据库操作的问题,请大家帮忙看看
  • MM求助:怎样多线程下载http://java.sun.com上的东东? 用http方式,谢谢了.
  • linux下进程并发问题。急!!!求助!!!
  • 菜鸟求助多线程并发服务器
  • 求助多线程并发的问题——rechard stevens网络编程第二卷例题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c/c++ iis7站长之家
  • 我想让vfork后就execl一进程,同时让execl出来的进程之间能相互通信,求助
  • 【求助】如何同时连接并登录多个服务器,然后执行相同的维护脚本
  • 无线网卡如果指定接收了一个AP发出的信号(通过指定ESSID),能同时接受到另一个AP发出的信号么?50分求助
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助


  • 站内导航:


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

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

    浙ICP备11055608号-3