社区
进程/线程/DLL
帖子详情
多进程写文件问题
sant
2008-07-28 10:11:10
windows平台下,有多个进程要同时写一个日志文件,请问有什么方便的办法,保证写文件的时候不存在竞争?谢谢!
...全文
564
17
打赏
收藏
多进程写文件问题
windows平台下,有多个进程要同时写一个日志文件,请问有什么方便的办法,保证写文件的时候不存在竞争?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
templarzq
2008-07-29
打赏
举报
回复
mark
kantonwang2007
2008-07-29
打赏
举报
回复
1. 写文件函数加锁
2. 写文件开一个线程,其他线程往这个线程post消息
cnzdgs
2008-07-28
打赏
举报
回复
你所说的“协调竞争”具体指什么?系统底层有线程同步机制,一个线程正在访问文件时,其它线程要访问文件会自动等待。
sant
2008-07-28
打赏
举报
回复
如果只以共享的方式打开,不做任何lock处理,系统底层会帮助协调竞争么?有谁做过试验,或者有相关代码吗?谢谢
gaoteng1984
2008-07-28
打赏
举报
回复
LockFile在有别的进程访问文件时,会立即返回。
如果想让进程在此时阻塞,省得再去Sleep,可以用LockFileEx,不要加LOCKFILE_FAIL_IMMEDIATELY选项即可。
theendname
2008-07-28
打赏
举报
回复
CreateMutexW
cnzdgs
2008-07-28
打赏
举报
回复
多个线程同时访问同一个资源,不可能没有竞争,竞争是很正常的,也不需要避免,只要以共享方式打开,多个进程都可以访问文件,在访问文件时系统会自动处理线程同步,不会发生冲突,不过你自己要考虑数据的完整性。
Amuro1987218
2008-07-28
打赏
举报
回复
僵哥说的lockFile第一次看到,学习
Amuro1987218
2008-07-28
打赏
举报
回复
每个进程写文件时都用独享方式打开,写完后关闭,一旦打开失败说明其他进程正在读,这时sleep一段时间再试
僵哥
2008-07-28
打赏
举报
回复
注意查MSDN看看LockFile的参数以及参数的意义...
僵哥
2008-07-28
打赏
举报
回复
以共享(允读允写)模式打开文件,然后在写入之前先LockFile.
ZOthello
2008-07-28
打赏
举报
回复
mark up!!!
evileagle
2008-07-28
打赏
举报
回复
如果所有的进程都是你自己编的那么把写操作放到临界区里,保证数据完整性
sitych
2008-07-28
打赏
举报
回复
[Quote=引用 3 楼 Amuro1987218 的回复:]
每个进程写文件时都用独享方式打开,写完后关闭,一旦打开失败说明其他进程正在读,这时sleep一段时间再试
[/Quote]
hxfjb
2008-07-28
打赏
举报
回复
使用互斥量同步访问文件句柄。
Mutex
Event
等
cnzdgs
2008-07-28
打赏
举报
回复
从理论上说,系统底层会保证在一次写请求未完成之前,不会插入其它线程的写请求。但文件不是“流”,实际多进程操作时,每次执行写文件时必须事先确定要写入的位置,无法在写文件时指定把数据写到文件末尾,这样当两个进程同时写文件时,就会产生相互覆盖的情况。如果要解决这个问题,最简单的做法是每次写文件前以非独占方式打开文件,写完之后关闭文件。也可以用命名对象实现线程同步等方法。
另外目前VC中的fprintf函数不是一次写入文件的,如果使用这个函数需要自己处理线程同步。
sant
2008-07-28
打赏
举报
回复
我的意思是多个"
进程
"同时"
写
"一个以共享方式打开的文件时,会不会出现一个进程写了半行,然后接着其它进程跟着写了半行的情况。当写文件存在竞争的情况下,是操作系统保证写得原子性,还是需要通过程序中的同步机制来保证写得原子性。
系统底层api,或者fprintf这样标准的带缓冲的函数,对于共享文件上的写竞争的是怎么处理的?有可以参考的介绍,或者试验吗?谢谢
python
多进程
读
写
文件
_python
多进程
文件
操作的一些理解
如果
多进程
都对同一个
文件
进行
写
入,那么就会出现多个进程争夺资源的
问题
。会使
写
入的
文件
内容错乱。1.
写
入
文件
: 同一时间,只能有一个进程,对
文件
进行
写
入操作。这是操作系统的设定2.
多进程
写
入
文件
: 由操作系统随机决定哪个进程来
写
入操作。因为这种决策是随机,完全无序的。所以
写
入
文件
时,会造成
文件
顺序的错乱。一个进程执行多长时间是由操作系统决定的。而且程序的执行单元是原子型的,也就是说一行汇编代码才...
文件
的
多进程
读
写
一直以为
多进程
读
写
文件
是安全的,只有fflush和fclose才会真正修改
文件
内容,诸多开源项目的日志系统也基本都是多线程的,asterisk同样没有为ast_log建立一个专门的日志线程,而是各自调用,通过fflush直接
写
缓存。但是最近在8032上面发现的一个
问题
改变了我的看法。
问题
描述: 跟踪用户设备时发现网管配置
文件
snmp.conf出现过几次
文件
内容丢失的情况
Python
多进程
向同一个
文件
写
数据
1.遇到的
问题
: 之前,处理数据的时候,因为考虑到Python
多进程
可以充分利用CPU核数,提高程序的效率。但是向同一个
文件
写
入数据的时候,由于
多进程
是并发进行,操作系统中会不清楚到底要
写
入哪个数据到
文件
中,所以会出现资源竞争混乱,导致
文件
内容轮乱。
多进程
也有一些
问题
,比如,如果进程都需要
写
入同一个
文件
,那么就会出现多个进程争用资源的
问题
,如果不解决,那就会使
文件
的内容顺序杂乱。 这就需要涉及到...
多进程
文件
读
写
之加锁
多进程
加锁
问题
前言 在嵌入式系统开发的过程中,配置
文件
用来存放系统或者一些重要进程的一些配置信息,这些配置
文件
有可能会被多个用户态程序进行访问,因此,防止多线程(或
多进程
)同时设置相同配置
文件
,造成低概率配置
文件
内容丢失,对配置
文件
加锁很有必要。 实例 #include<sys/file.h> #define CONFIG_LOCK_PATH “/tmp/file.loc...
C#
多进程
文件
读
写
的锁处理
本文主要是实现操作系统级别的
多进程
间线程同步(进程同步)的示例代码及测试结果。代码经过测试,可供参考,也可直接使用。 承接上一篇博客的业务场景[C#使用读
写
锁三行代码简单解决多线程并发
写
入
文件
时线程同步的
问题
]。 随着服务进程的增多,光凭进程内的线程同步已经不能满足现在的需求,导致
多进程
同时
写
入同一个
文件
时,一样提示
文件
被占用的
问题
。 在这种场景下,跨进程级的锁是不可避免的。在.
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章