removefilesemaphore.m

来自「非常好的差分进化matlab程序」· M 代码 · 共 55 行

M
55
字号
function removefilesemaphore(semaphore)
%REMOVEFILESEMAPHORE  Remove semaphore after file access.
%		REMOVEFILESEMAPHORE(SEMAPHORE) removes the semaphore(s) set by function
%		SETFILESEMAPHORE to allow file access for other Matlab processes.
%
%		Example:
%		sem = setfilesemaphore('test.mat');
%		% access file test.mat here
%		dir test.mat.semaphore.*
%		removefilesemaphore(sem);
%
%		Markus Buehren
%		Last modified 21.04.2008 
%
%		See also SETFILESEMAPHORE.

% remove semaphore files
for fileNr = 1:length(semaphore)
	if existfile(semaphore{fileNr})
		
		try
			% do not use function deletewithsemaphores.m here!
			
			% sometimes deletion permission is not given, so try several times to
			% delete the file

			fileDeleted = false;
			warnID = 'MATLAB:DELETE:Permission';
			warnState = warning('query', warnID);
			warning('off', warnID);
			for k=1:10
				lastwarn('');
				delete(semaphore{fileNr});
				if isempty(lastwarn)
					fileDeleted = true;
					break
				end
			end
			warning(warnState);

			if ~fileDeleted
				% try one last time with display of warning message
				delete(semaphore{fileNr});
			end

		catch
			% in very very very unlikely cases two processes might have generated
			% the same semaphore file name, in very very very very unlikely cases
			% they might try to delete the file at the same time
			
			% do nothing
		end
	end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?