У меня есть приложение, над которым я работаю, для которого требуется пара вторичных потоков, и каждый из них будет отвечать за несколько файловых дескрипторов (не менее 1, не более 10).Дескрипторы файла не являются общими для потоков, поэтому мне не нужно беспокоиться о том, что один вторичный поток блокирует другой при просмотре select
, чтобы увидеть, что готово для чтения / записи.В чем я хочу быть уверен, так это в том, что ни один из вторичных потоков не вызовет прекращения выполнения основного потока, пока выполняется вызов select
/ pselect
.
Я бы предположил, что это не проблема- можно было бы предположить, что такие вещи будут совершаться, скажем, на веб-сервере, - но я не смог найти ничего, что конкретно говорило бы: «Да, вы можете сделать это», когда я погуглил.Я прав в своем предположении, что это не вызовет никаких проблем?
Для пояснения, что у меня выглядит примерно так:
Основной поток выполнения (select()
цикл обработки входящих командных сообщений и исходящих ответов)
Вторичный поток # 1 (select()
цикл, предоставляющий сервис) *
Вторичный поток # 2(select()
цикл, предоставляющий другую услугу)
Как я упоминал ранее, ни один из файловых дескрипторов не является общим для потоков - они создаются, используются и уничтожаются в отдельном потоке,с другими нитями, неосведомленными об их существовании.