多进程写文件问题 以共享(允读允写)模式打开文件,然后在写入之前先LockFile. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 注意查MSDN看看LockFile的参数以及参数的意义... 每个进程写文件时都用独享方式打开,写完后关闭,一旦打开失败说明其他进程正在读,这时sleep一段时间再试 僵哥说的lockFile第一次看到,学习 LockFile在有别的进程访问文件时,会立即返回。如果想让进程在此时阻塞,省得再去Sleep,可以用LockFileEx,不要加LOCKFILE_FAIL_IMMEDIATELY选项即可。 如果只以共享的方式打开,不做任何lock处理,系统底层会帮助协调竞争么?有谁做过试验,或者有相关代码吗?谢谢 我的意思是多个"进程"同时"写"一个以共享方式打开的文件时,会不会出现一个进程写了半行,然后接着其它进程跟着写了半行的情况。当写文件存在竞争的情况下,是操作系统保证写得原子性,还是需要通过程序中的同步机制来保证写得原子性。系统底层api,或者fprintf这样标准的带缓冲的函数,对于共享文件上的写竞争的是怎么处理的?有可以参考的介绍,或者试验吗?谢谢 从理论上说,系统底层会保证在一次写请求未完成之前,不会插入其它线程的写请求。但文件不是“流”,实际多进程操作时,每次执行写文件时必须事先确定要写入的位置,无法在写文件时指定把数据写到文件末尾,这样当两个进程同时写文件时,就会产生相互覆盖的情况。如果要解决这个问题,最简单的做法是每次写文件前以非独占方式打开文件,写完之后关闭文件。也可以用命名对象实现线程同步等方法。另外目前VC中的fprintf函数不是一次写入文件的,如果使用这个函数需要自己处理线程同步。 使用互斥量同步访问文件句柄。MutexEvent等 1. 写文件函数加锁2. 写文件开一个线程,其他线程往这个线程post消息 OnBeforeNavigateExplorer1没响应 LoadBitmap加载图片失败 空中SOS,望达人相助!!!! 怎么获得进程PID 认为自己很牛的人来看看,算法讨论!!! 在VC中怎么样操作.INI文件? 好奇怪的问题! 网页中调用DLL问题 一个手机应用列表控件,附源码 菜鸟来了!!!怎样添加函数!急 c语言高手进来帮帮忙!!!!! CListCtrl的InsertItemData()
如果想让进程在此时阻塞,省得再去Sleep,可以用LockFileEx,不要加LOCKFILE_FAIL_IMMEDIATELY选项即可。
系统底层api,或者fprintf这样标准的带缓冲的函数,对于共享文件上的写竞争的是怎么处理的?有可以参考的介绍,或者试验吗?谢谢
另外目前VC中的fprintf函数不是一次写入文件的,如果使用这个函数需要自己处理线程同步。
Mutex
Event
等
2. 写文件开一个线程,其他线程往这个线程post消息