Синхронизация процессов

263
17 января 2018, 17:20

Подскажите, как сделать синхронизацию процессов? Через fork создаю 2 дочерних процесса, и мне нужно читать файл, чтобы каждый процесс читал по 10 символов в течение 10 секунд.

Answer 1

Есть три варианта локирования файлов:

  1. flock - системный вызов (man 2 flock)
  2. flockfile - функция из библиотеки stdio (man 3 flockfile)
  3. lockf - локирование части файла

Посмотрите, что Вам больше подходит. Кусочек из доки по POSIX:

POSIX поддерживает форму межпроцессного обмена, называемую «консультативная блокировка записи». Эта функция есть в POSIX и System V Release 3 и более поздних версиях, но не в BSD. Блокировка записи позволяет одному процессу указать его намерение читать или записывать часть файла. Другие процессы могут наблюдать эти намерения. Это называется консультативной блокировкой, потому что система не контролирует программы, которые читают или записывают заблокированные файлы. Работоспособность схемы зависит от доброй воли и правильного кодирования каждой прикладной программы.

READ ALSO
Почему не работает шаблон?

Почему не работает шаблон?

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

271
сортировка изображений

сортировка изображений

Сравнил попарно все изображения - получается матрица чисел (для удобства сжаты до 0-254) N x N, как теперь упорядочить чтобы похожие были рядом...

302
gdb отладка многопоточного приложения

gdb отладка многопоточного приложения

здравствуйте, возникла необходимость научиться отлаживать многопоточное приложение через gdb

399
c++ UDP Win Linux

c++ UDP Win Linux

Я хочу создать обёртку над сокетами в виде 2х простых классовНа подобии QTUdp

298