Вложенные параллельные циклы while

Я пытаюсь запустить два цикла while параллельно с целью сбора данных. Эта программа будет работать в течение "n" num_trials с определенной продолжительностью пробной версии для каждой пробной версии.

Во время каждого испытания программа будет собирать данные, отслеживая продолжительность испытания. Например, первая пробная версия начинает сбор данных через 1 секунду и останавливается через 10 секунд. Этот процесс будет повторяться для остальных попыток.

Как я могу запустить оба цикла while параллельно?

По сути, мне просто нужен метод, который разорвет второй цикл while после завершения указанной пробной продолжительности?

Заранее спасибо.

count = 0;
num_trials = 5; % Number of Trials = 5 Trials
trial_duration = 10; % Trial Duration = 10 Seconds

global check 
check = 0;

% Number of Trials
for i = 1:num_trials

    fprintf('Starting Trial %i\n', i);

    t_start = tic;

    % Start counting and Collecting Data
    while toc(t_start) < trial_duration

        % Data Collection
        while (check ~= 1)  
            count = count +1;
        end

    end

    fprintf('Ending Trial %i\n', i);
end

person exlux15    schedule 11.07.2013    source источник
comment
Какие два цикла while вы имеете в виду? Я думаю, вам нужно переосмыслить, как вы храните свои данные.   -  person jdero    schedule 11.07.2013
comment
@jdero В коде есть только циклы while. Первый — это таймер, а второй — сбор данных. Я не беспокоюсь о хранении данных в данный момент.   -  person exlux15    schedule 11.07.2013
comment
вы смотрели на параллельный набор инструментов?   -  person Marcin    schedule 11.07.2013
comment
@Marcin Я пробовал цикл parfor, но это не сработает для этого приложения. Я смотрю на SPMD, но я не уверен, что они вычисляют независимо на отдельных рабочих узлах. Мне нужен первый цикл while, чтобы остановить второй цикл while через несколько секунд.   -  person exlux15    schedule 11.07.2013


Ответы (1)


Вы пытались использовать один цикл с && ?

while (toc(t_start) < trial_duration) && (check ~= 1)

        % Data Collection
        count = count +1;

end
person Dan    schedule 11.07.2013