Nano Hash - криптовалюты, майнинг, программирование

Как заблокировать запись в каналы, пока не произошло чтение? (в С)

В настоящее время я работаю над некоторой программой C, и я хотел бы знать, есть ли шанс заблокировать запись в процессе записи (пока не будет выполнено чтение)? т. е. у меня есть 3 канала между родительским процессом и дочерними процессами (родитель пишет, а дети читают), я бы хотел, чтобы родитель мог писать только в процесс, который заканчивает чтение :)

надеюсь понятно..

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

24.12.2010

Ответы:


1

бмаргулис прав. Однако альтернативой созданию более сложного протокола было бы использование нескольких потоков в родительском процессе — по одному потоку на дочерний процесс. Один поток может быть заблокирован из-за медленного дочернего процесса, но другие потоки могут продолжить работу со своими дочерними элементами. В зависимости от деталей вашей проблемы, это может решить ее.

24.12.2010
  • Так что нет способа определить, заблокирован ли другой процесс в трубе для чтения?.. Похоже, я буду использовать сигналы 24.12.2010

  • 2

    Ядро имеет лимит буфера для каналов, и писатели блокируются, если буфер заполняется.

    Если вы хотите сделать это с вашими собственными границами сообщений, а не только на основе размера буфера, то вам нужно создать более сложный протокол, например, блокировать считыватель на канале, идущем в другом направлении, прежде чем отправлять больше.

    24.12.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..