我正在寻找一个简单的已实现的解决方案,用于在 MATLAB 中自动创建文件锁。
就像是:
file_lock('create', 'mylockfile'); %this will block until it creates the lock file.
file_lock('remove', 'mylockfile'); %this will remove the lock file:
这个问题已经被问过好几次了,并提出了一些解决方案的想法(例如使用 JavaFileLock
),
但我没有找到一个简单的已实施的解决方案。
您知道这样的实施解决方案吗?
Notes:
-
通过 Matlab 实例锁定文件访问或交换消息
- 主题:无竞争条件的安全文件互斥体
我已经确定了一个非常简单的解决方案,用于将来自多个工作线程的错误/日志消息合并到一个文件中。每次我想写入该文件时,我首先将输出写入线程自己的临时文件。接下来,我使用集群将该临时文件附加到“主”日志文件中。这里跳过一些细节,想法是:
fid=fopen(threadtemp, 'w');
fprintf(fid, 'Error message goes here');
fclose(fid);
runme = sprintf('flock -x %s -c ''cat %s >> %s''', LOGFILE, threadtemp, LOGFILE);
system(runme);
有关详细信息,请参阅集群手册页,但上面的调用是获取日志文件上的独占锁,在锁下运行提供的命令,然后释放它。
显然,只有当你所在的系统有集群(Linux/OS X,并且只有某些类型的文件系统)并且你正在做一些可以从命令行完成的事情时,这才有效,但我敢打赌这是一个非常常见的用例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)