Effacer les filtres
Effacer les filtres

PCT: Lock and Simultaneous Access

2 vues (au cours des 30 derniers jours)
Matlab2010 le 23 Nov 2014
Commenté : Matlab2010 le 1 Déc 2014
When using PCT, how can you enforce synchronous access to resources? Eg lock in C#.
I have some code,
parameters = [1 2 3 4];
my_files = getListOfFiles();
parfor i = 1 :I
myFunc(my_files, parameters);
function myFunc(my_files, p)
for j = 1: length(myFiles)
data = load(myFiles(j));
runFunction(data, p);
So in summary this code runs in a parfor loop and accesses files and works on them. The problem is that different parfor loops may want to access the same myFiles(j) at the same time. This means the resource is locked by the system, meaning a fatal error.
The error messages look like:
Would you like to replace the existing file D:\data\1.mat
15481315 bytes, modified on 23-11-2014 10:28
with a new one
15481315 bytes, modified on 21-11-2014 07:53
The process cannot access the file because it is being used by another process.
When this happens I would like to matlab wait to access the resource until it becomes free. How can i do this? My only thoughts on this are, but I think there must be a more sensible way,
function myFunc(my_files, p)
for j = 1: length(myFiles)
if(~exist(myFiles(j), 'file' == 2))
runFunction(data, p);
while exist(myFiles(j), 'file' == 2)
Though when I try the above, I get at the load() call:
Unable to read MAT-file D:\folder\file.mat
File may be corrupt.
I am using 2014A. thanks

Réponses (0)


En savoir plus sur Startup and Shutdown dans Help Center et File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by