Как реализовать пропуск части кода при пустом списке

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Добрый день знатоки. Помогите с направлением - где посмотреть реализацию такого момента
Есть участок кода, примерно с такой структурой, которая выполняется во многопотоке

C#:
//Тут индуский код
Section 1
{
    /*
    Тут находится код, по результатам которого входящие значения расскладываются в два списка
    List0.Add(badresult);
    List1.Add(transitresult);
    */
}
Section 2
{
    /*
    В данной области обрабатываются результаты которые попадают в List1 из предыдущего кода
    */
}
//Далее следует продолжение индуского кода
При работе во много потоке - первая секция отбрасывает (отбраковывает) разное количество строк из входящего списка и , к примеру, в List1 попадает всегда меньше значений чем поступает на обработку. В результате через какое то время Section 2 завершается аварийно, так как в List1 поступает значений меньше чем работающих потоков и в итоге в какой то момент времени List1 становится пустым для всех потоков
//////
Подскажите, куда посмотреть чтобы в случае если список List1 пуст - усыпить поток с проверкой через время, но в идеале вернуть в начало Section 1 чтобы он не ждал наполнения списка другими работающими потоками, а сам приступил к наполнению списка.
Друзья, возможно есть более "нормальное" решение - буду признателен если "тыкните" где прочитать (кроме метанита пожалуйста)
PS Усыпить поток не вариант - список все равно останется пустым так как все потоки будут ждать вместо того чтобы работать. Нужен пропуск кода
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
цикл попыток, метка, try/catch, анализ метки....
Цикл попыток - не подойдет, когда список будет пустым, все потоки будут в бесконечном ожидание
try/catch - указанные мною секции сами по себе являются try/catch :-)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Цикл попыток - не подойдет, когда список будет пустым, все потоки будут в бесконечном ожидание
try/catch - указанные мною секции сами по себе являются try/catch :-)
почему не подойдет ?
оборачиваешь свои 2 секции в цикл и работаешь. что бы не было бесконечного цикла, делаешь конечное число в этом цикле и паузу при выбивании на ошибку во 2-й секции.
стандартная схема, так то...
 
  • Спасибо
Реакции: Yuriy Zymlex

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)