Q:天软TSL程序中,为什么对文件加锁(SysCreateMutex)的情况下,多线程读写同一个文件还是有可能会失败?
A:在多线程编程中,即使对文件操作进行了加锁处理,有时依然会遇到读写失败的情况。这很有可能是
当前账户权限不足导致。
在Windows环境下,使用SysCreateMutex创建的全局锁对象(如命名的互斥锁),需要足够的权限。
若当前运行程序的系统账户权限不够,无法创建有效的全局同步对象,会导致加锁机制失效,无法真正协调线程间的文件访问。
解决方法:
打开系统中的“本地安全策略”,找到“创建全局对象”,添加当前系统账户。
注:上述解决办法仅适用于本机文件,不适用共享文件(如远端机上的文件)。