LINUX.ORG.RU

семафор бинарный или что-то похожее.


0

0

Нужно сделать что-то вроде named семафора, но не счетчика. К примеру программа А ему делает post а программы B1, B2, B3... сделавшие wait, ловят этот post и отрабатывают его. Причем если post послали 10 раз, то пропустить его задачи B1, B2, B3, могут, но потом дождаться нового post, и обработать его 1 раз. Ну и левых postов не должны поймать. Сколько задач B, не известно.

Ну, это как в микроконтроллере, прерывание создает кучу данных, и поднимает флаг. А по этому флагу, уже более низкоуровневые taskи должны эти данные обработать.

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

Например, можно так (первое, что в голову пришло)

m = mutex()
n = 0
a = semaphore(0)

ожидание:
lock(m)
n = n + 1
unlock(m)
dec(a)

уведомление:
lock(m)
repeat n: inc(a)
n = 0
unlock(m)

dmitry_vk ★★★
()
Ответ на: комментарий от Artem-Dnepr

Я sem_open сделал именнованный семафор, чтобы этот семафор могло открыть 1...20 программ, и по нему синхронизироваться.

Artem-Dnepr
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.