C пакетной обработки данных и основной поток ожидания для всех дочерних потоков - PullRequest
0 голосов
/ 11 мая 2018

Описание: 1. Существует один основной поток и 8 подпотоков, все эти потоки выполняются в цикле, выход не требуется.2. Эти 8 подпотоков установят глобальную переменную, затем в основном потоке нужно прочитать эту глобальную переменную.3. Главный поток должен дождаться завершения всех этих 8 подпотоков, чтобы завершить один цикл.У каждой подпотока есть событие.

Псевдокод: подпоток:

While(1) {
    do_something1();
    set_global_variable;
    set_event;
    sleep(100);
}

основной поток:

While(1) {
    int i;
    for (i = 0; i < 8; i++) {
        wait_event[event[i]];
    }

    read_global_variable;
    do_something2();
    sleep(100)
}

Мой вопрос: мне нужно реализоватьследующее.Когда установлено событие одного подпотока, подпоток должен быть приостановлен до тех пор, пока не будут установлены события всех этих 8 подпотоков, и основной поток не выполнит read_global_variable, тогда подпоток может начать работать снова.То есть основной поток должен контролировать выполнение подпотоков.Но я не могу обработать это лучше.Как это реализовать?Спасибо.

...