LINUX.ORG.RU

Глобальный mutex?


0

0

У меня есть две проги, которые должны синхронизироваться между собой (когда одна работает, другая ждет). Для одного процесса я использую "struct pthread_mutex_t" и "pthread_mutex_nnn" функции. Но как зделать один mutex для двух обсолютно разных процессов (очередность их загрузки не известна)?????

Под виндами использую именованный mutex. Может Linux тоже имеет что-то подобное???

Нужно реальзовать функции: BOOL CLockSemaphore::Lock(); BOOL CLockSemaphore::UnLock(); BOOL CLockSemaphore::TryLock();

Заранее спасибо, Игорь

anonymous

Попробуй через файл - наличие файла с оригинальным названием есть хороший симафор ( главное чтоб ФС не подвела! :)

PETER ★★
()

Sorry for English.

Avoid using files. You may run into unpleasant races.

You may try System V style IPC (semget, semctl, semop).
However, the most reliable, scalable and portable solution is a
private protocol across a socket.

anonymous
()

Согласен, но и "файл" "файлу" рознь :) А про IPC посмотреть рекомендую man perlipc, думаю что сделать тоже самое на Ц не представит труда.

PETER ★★
()

Можно работать через мьютекс, расположенный в разделяемой памяти.
Т.е. создаёшь кусок разделяемой (SysV shared memory) размером
sizeof(pthread_mutex_t), инициализируешь её pthread_mutex_init(3) и дальше пользуешь как обычный мьютекс.

P.S. Данное решение взято из книги: R.Stewens UNIX Network Programming. Second Edition. Vol1.

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