亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? setfilesemaphore.m

?? This contribution provides functions for finding an optimum parameter set using the evolutionary alg
?? M
字號:
function semaphore = setfilesemaphore(fileList)
%SETFILESEMAPHORE  Set semaphore for file access.
%   SEMAPHORE = SETFILESEMAPHORE(FILENAME) sets a semaphore to get
%   exclusive access on file FILE. The semaphore is realized by generating
%   a simple Matlab data file after checking that no other semaphores are
%   existing. The function exits if the semaphore is set. Exclusive file
%   access is of course only guaranteed if all other Matlab processes use
%   semaphores to access the same file.
%
%   The output variable SEMAPHORE is needed to correctly remove the file
%   semaphore after file access. It is an error to call function
%   SETFILESEMAPHORE without output arguments.
%
%   SEMAPHORE = SETFILESEMAPHORE(FILELIST) sets semaphores for all files
%   given in cell array FILELIST. Note that function SETFILESEMAPHORE waits
%   for exclusive file access on ALL files in the list before exiting.
%
%		Note: A semaphore older than 20 seconds is considered as invalid and
%		will immediately be deleted.
%
%		Example:
%		sem = setfilesemaphore('test.mat');
%		% access file test.mat here
%		dir test.mat.semaphore.*
%		removefilesemaphore(sem);
%
%		Markus Buehren
%		Last modified 21.12.2008
%
%   See also REMOVEFILESEMAPHORE.

persistent filesToIgnore

% set times (all in seconds)
semaphoreOldTime = 20;
fixedWaitTime    = 0.05;
checkWaitTime    = 0.1;
waitInfoPeriod   = 5;
maxRandomTime    = 0.3;

if nargout ~= 1
	error('Function %s must be called with one output argument!', mfilename);
end

if ischar(fileList)
	% single file given
	fileList = {fileList};
end

nOfFiles = length(fileList);
semaphore = cell(nOfFiles, 1);
for fileNr = 1:nOfFiles

	fileName = fileList{fileNr};

	% check if given file is itself a semaphore file
	if ~isempty(regexp(fileName, '\.semaphore\.\w+\.\d+\.mat$', 'once'))
		semaphore{fileNr, 1} = '';
		continue
	end

	% generate semaphore file pattern of current file
	semaphorePattern     = [fileName, '.semaphore.*.mat'];
	semaphorePatternPath = fileparts(semaphorePattern);

	startWaitTime   = now;
	displayWaitInfo = true;
	while 1
		dirStruct = dir(semaphorePattern);

		if ~isempty(dirStruct)
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			% other semaphore file existing %
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			
			% check if any semaphore is very old
			allSemaphoresOld = true;
			for k=1:length(dirStruct)
				
				% get file date
				if isempty(dirStruct(k).date)
					% it happens that the info in dirStruct is damaged, file is
					% checked again later in that case
					allSemaphoresOld = false;
					continue
				elseif isfield(dirStruct, 'datenum')
					fileDatenum = dirStruct(k).datenum;
				else
					% in older Matlab version, the field datenum seems not to exist
					fileDatenum = datenum2(dirStruct(k).date);
				end
				
				if now - fileDatenum > semaphoreOldTime / (3600*24)
					oldSemaphoreFileName = concatpath(semaphorePatternPath, dirStruct(k).name);

					% avoid to issue more than one warning for each file
					if ~isempty(filesToIgnore) && ismember(oldSemaphoreFileName, filesToIgnore)
						% ignore file
						continue
					end

					% add file to ignore list
					filesToIgnore{end+1} = oldSemaphoreFileName; %#ok
					disp(textwrap2(sprintf('Warning: Ignoring old semaphore of file %s.', fileName)));
					% limit the number of saved files
					if length(filesToIgnore) > 200
						filesToIgnore = filesToIgnore(end-100:end);
					end

					% turn off file permission warnings
					warnID = 'MATLAB:DELETE:Permission';
					warnState = warning('query', warnID);
					warning('off', warnID);

					% check if semaphore file exists
					if existfile(oldSemaphoreFileName)

						% try to remove semaphore
						nrOfAttempts = 3;
						for attemptNr = 1:nrOfAttempts
							lastwarn('');
							try
								% deletion may cause an error or a file permission warning
								delete(oldSemaphoreFileName); %% file access %%
								break
							catch
								if attemptNr == nrOfAttempts
									disp(textwrap2(sprintf('Warning: Error occured in removing old semaphore of file %s.', fileName)));
								end
							end
							pause(checkWaitTime);
						end

						% check last warning
						[lastMsg, lastWarnID] = lastwarn;
						if strcmp(lastWarnID, warnID)
							disp(textwrap2(sprintf('Warning: Unable to remove old semaphore of file %s.', fileName)));
						end
					end
					warning(warnState);
				else
					allSemaphoresOld = false;
				end
			end % k=1:length(dirStruct)

			if allSemaphoresOld
				continue
			end

			% display info
			if displayWaitInfo && (now - startWaitTime)*86400 >= waitInfoPeriod
				disp(sprintf('Waiting for semaphore of file %s to disappear.', fileName));
				displayWaitInfo = false;
			end

			% wait before checking again
			pause(checkWaitTime);

		else
			%%%%%%%%%%%%%%%%%%%%%%%%%%
			% set own semaphore file %
			%%%%%%%%%%%%%%%%%%%%%%%%%%
			for attemptNr = 1:10
				% generate semaphore file name
				[randomNr, randomStr] = generaterandomnumber; %#ok
				semaphoreFileName = [fileName, '.semaphore.', gethostname, '.', randomStr, '.mat'];
				
				try
					touchfile__(semaphoreFileName); %% file access %%
					break
				catch
					disp(sprintf('An error occured while accessing semaphore file %s:', semaphoreFileName));
					displayerrorstruct;

					% in very very very unlikely cases two processes might have
					% generated the same semaphore file name --> wait random time and try again
					pause(checkWaitTime + maxRandomTime * randomNr);
				end
			end

			% wait fixed time
			pause(fixedWaitTime);

			% in very unlikely cases, two semaphore files might have been created
			% at the same time
			removeOwnSemaphore = false;

			dirStruct = dir(semaphorePattern);
			if length(dirStruct) > 1
				for k=1:length(dirStruct)
					currFileName = dirStruct(k).name;
					
					if ~strcmp(currFileName, semaphoreFileName) && ...
							~isempty(filesToIgnore) && ...
							~ismember(currFileName, filesToIgnore)
						% at least one the semaphores found may not be ignored
						removeOwnSemaphore = true;
						break
					end
				end
			end
			
			if removeOwnSemaphore
				% remove own semaphore file
				for attemptNr = 1:10
					try
						% deletion may cause an error or a file permission warning
						delete(semaphoreFileName); %% file access %%
						break
					catch
						disp(textwrap2(sprintf('Warning: Error occured in removing semaphore of file %s.', fileName)));
					end
					pause(checkWaitTime);
				end

				% wait RANDOM time before checking again
				pause(maxRandomTime * generaterandomnumber);
			else
				% exclusive file access is guaranteed
				% save semaphore file name and leave while loop
				semaphore{fileNr, 1} = semaphoreFileName;
				
				if ~displayWaitInfo
					disp('File semaphore disappeared.');
				end
				break
			end
		end % if ~isempty(dirStruct)
	end % while 1
end % for fileNr = 1:nOfFiles

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [randomNr, randomStr] = generaterandomnumber
%GENERATERANDOMNUMBER
%   in very unlikely cases, it might happen that the random states of rand
%   and randn are equal in two Matlab processes calling function
%   SETFILESEMAPHORE. For this reason, the system and cpu time are used to
%   create different random numbers even in this unlikely case.
%
%		This all were not necessary if it were possible to get some sort of a
%		Matlab process ID.

nOfDigits = 8; % length of random string will be 4*nOfDigits

randNr    = rand;
randnNr   = mod(randn+0.5, 1);
cputimeNr = mod(cputime, 100)/100;
nowNr     = mod(rem(now,1)*3600*24, 100)/100;

% random number is used for random pause after conflict
randomNr = 0.25 * (randNr + randnNr + cputimeNr + nowNr);

% random string is used for the semaphore file name
if nargout > 1
	ee = 10^nOfDigits;
	randomStr = sprintf('%.0f%.0f%.0f%.0f', ...
		ee * randNr,    ...
		ee * randnNr,   ...
		ee * cputimeNr, ...
		ee * nowNr      ...
		);
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function displayerrorstruct(errorStruct)
%DISPLAYERRORSTRUCT  Display structure returned by function lasterror.
%		DISPLAYERRORSTRUCT displays the structure returned by function
%		LASTERROR. Useful when catching errors.
%
%		Markus Buehren
%
%   See also LASTERROR.

if nargin == 0
	errorStruct = lasterror;
end

disp(errorStruct.message);
errorStack = errorStruct.stack;
for k=1:length(errorStack)
	disp(sprintf('Error in ==> %s at %d.', errorStack(k).name, errorStack(k).line));
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function success = touchfile__(fileName)
%TOUCHFILE  Generate empty file.
%		TOUCHFILE(FILENAME) generates an empty file with the given file name.
%
%		Markus Buehren
%
%   See also FOPEN.

try
	[fid, message] = fopen(fileName, 'w');
catch
	fid = -1;
	% do nothing
end

if fid == -1
	disp(message);
	success = 0;
else
	fclose(fid);
	success = 1;
end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国一区二区视频| 欧美成人激情免费网| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产一区二区三区久久久| 图片区小说区国产精品视频| 亚洲一区二区三区四区中文字幕| 一区二区三区美女视频| 一区二区三区免费看视频| 一区二区三区免费观看| 午夜精品一区二区三区电影天堂| 夜夜精品视频一区二区| 亚洲一区二区三区爽爽爽爽爽| 一区二区三区四区在线播放| 一区二区三区日本| 亚洲一二三区视频在线观看| 亚洲成人激情自拍| 蜜乳av一区二区三区| 国产精品一区二区x88av| 粉嫩av亚洲一区二区图片| 97久久人人超碰| 欧美性极品少妇| 4438x亚洲最大成人网| 日韩三级在线观看| 国产欧美综合在线| 亚洲精品大片www| 亚洲 欧美综合在线网络| 蜜桃久久av一区| 国产精品一区久久久久| 99国产精品视频免费观看| 欧美三级视频在线| 欧美成人a∨高清免费观看| 国产日韩欧美综合在线| 亚洲天堂福利av| 亚洲444eee在线观看| 国产一区免费电影| 91麻豆国产在线观看| 777亚洲妇女| 国产亚洲人成网站| 一区二区三区毛片| 国产在线不卡一区| 色视频欧美一区二区三区| 在线播放91灌醉迷j高跟美女| 精品国产一区二区精华| 日韩一区欧美小说| 蜜桃免费网站一区二区三区| 成人福利在线看| 777欧美精品| 国产精品动漫网站| 免费久久精品视频| 色先锋aa成人| 久久亚洲精品国产精品紫薇| 亚洲美女区一区| 老司机精品视频线观看86| 99精品久久只有精品| 欧美成人一区二区三区片免费 | ...av二区三区久久精品| 日韩精品亚洲专区| 不卡av在线网| 日韩欧美一区中文| 亚洲免费高清视频在线| 国模无码大尺度一区二区三区| 欧美性受极品xxxx喷水| 国产精品欧美久久久久无广告 | 男男成人高潮片免费网站| 成人影视亚洲图片在线| 欧美久久一区二区| 日韩久久一区二区| 国产毛片精品一区| 91精品久久久久久久91蜜桃 | 国产资源精品在线观看| 91国在线观看| 国产精品二三区| 国产精品亚洲午夜一区二区三区 | 91精品国产色综合久久不卡蜜臀| 国产精品护士白丝一区av| 精彩视频一区二区三区| 欧美亚洲国产bt| 亚洲欧美日韩一区二区| 国产精品一区二区久久不卡 | 青青草国产成人av片免费| 91麻豆swag| 国产精品无遮挡| 国产一区二区精品久久91| 欧美成va人片在线观看| 五月天中文字幕一区二区| 日本韩国精品在线| 中文字幕日韩精品一区| 国产精品一二三在| 久久久影院官网| 国产老妇另类xxxxx| 欧美大胆人体bbbb| 老司机午夜精品| 欧美mv日韩mv国产网站| 日本欧美一区二区在线观看| 欧美色精品天天在线观看视频| 亚洲精品中文在线影院| 99精品视频一区二区三区| 亚洲欧洲av一区二区三区久久| 成人福利视频在线| 国产精品另类一区| www.成人在线| 亚洲伦在线观看| 色哟哟日韩精品| 亚洲国产精品麻豆| 欧美日韩不卡一区| 丝袜美腿亚洲色图| 欧美一区二区播放| 美女一区二区在线观看| 欧美va亚洲va| 国产精品18久久久久| 久久久久久久综合色一本| 国产成人精品免费网站| 久久久91精品国产一区二区精品| 国产精品一区二区无线| 欧美国产日产图区| 色综合久久久久综合| 亚洲综合色网站| 在线播放中文一区| 国产综合色产在线精品| 国产精品网站在线| 91网页版在线| 午夜日韩在线电影| 欧美成人精品3d动漫h| 国产电影精品久久禁18| 国产精品久久久久7777按摩| 在线观看日韩av先锋影音电影院| 亚洲不卡一区二区三区| 日韩欧美三级在线| 福利电影一区二区三区| 一级中文字幕一区二区| 51精品国自产在线| 国产不卡在线播放| 亚洲一级二级三级| 欧美哺乳videos| av亚洲精华国产精华精华| 亚洲一区二区免费视频| 日韩午夜激情视频| 成人毛片视频在线观看| 亚洲影院久久精品| 久久久综合九色合综国产精品| 91麻豆产精品久久久久久 | 在线视频你懂得一区二区三区| 亚洲超碰精品一区二区| 久久久精品2019中文字幕之3| 成人国产精品免费观看视频| 午夜伦欧美伦电影理论片| www一区二区| 91久久奴性调教| 激情久久久久久久久久久久久久久久| 国产精品久久久99| 日韩视频一区二区在线观看| 99久久综合国产精品| 日韩高清不卡在线| 中文字幕一区二区三区色视频| 欧美精品1区2区3区| 成人午夜视频福利| 婷婷丁香激情综合| 国产精品视频麻豆| 欧美一区二区三区爱爱| 99久久99久久综合| 精品亚洲成a人| 亚洲国产aⅴ天堂久久| 亚洲国产激情av| 日韩一区二区精品葵司在线| 99re这里只有精品首页| 国产资源在线一区| 午夜电影网亚洲视频| 亚洲人成人一区二区在线观看| 日韩欧美在线123| 欧美视频在线观看一区| 国产成人av影院| 蜜臀av性久久久久av蜜臀妖精| 亚洲精品国产a久久久久久| 国产日韩欧美一区二区三区综合| 欧美高清精品3d| 91蝌蚪porny九色| 国产精品一二一区| 激情久久五月天| 另类综合日韩欧美亚洲| 亚洲一级二级在线| 亚洲精品亚洲人成人网在线播放| 国产日韩精品一区二区三区| 日韩女同互慰一区二区| 欧美人与禽zozo性伦| 色狠狠一区二区三区香蕉| 粉嫩一区二区三区性色av| 国产一区二区三区精品视频| 免费不卡在线视频| 日韩精彩视频在线观看| 亚洲成在人线免费| 亚洲一二三四区| 亚洲一区二区在线免费看| 亚洲视频在线一区| 国产精品网友自拍| 亚洲国产精品精华液ab| 国产亚洲一区二区三区四区| 久久久久久久久久久久久夜| 精品国产乱码久久久久久1区2区| 日韩精品专区在线| 91精品国产欧美一区二区成人|