Pavel
А что если через сигналы передавать сообщения азбукой морзе?
Pavel
USR1 USR2 как раз
Vladislav
unreliable
Vladislav
точнуя задержка сильно зависит от hz и highres таймеров
Vladislav
если тебе не медленно, конечно, надо :)
Pavel
Не, тут задержка ни при чем. USR1 это точка, USR2 это тире. Просто накапливаем их и потом десериализуем
Vladislav
а, ну да, норм
Vladislav
пока внешний шум не помешал
Vladislav
заблочить сигналы от неинтересных процессов можно, но не сильно весело
Vladislav
статус файл можно сделать, mmapнуть его в каждом процессе и фиксированной структурой заполнять
Vladislav
лочить ренджем апи есть
Mark ☢️
А что там за задача была ?
Vladislav
Mark ☢️
Например
Vladislav
задача не моя, не помню
Womchik
Mark ☢️
Vladislav
Например
например один лок на весь процесс
Mark ☢️
Mark ☢️
Флок один на файл
Vladislav
Mark ☢️
Уж я то про флок точно всё знаю :)
Vladislav
Mark ☢️
Всмысле что это не самафор чтоли ?
Mark ☢️
Что значит один на владельца
Vladislav
ох. ты меня гуглить заставляешь, дядя
Vladislav
```A process may only hold one type of lock (shared or exclusive) on a file. Subsequent flock() calls on an already locked file will convert an existing lock to the new lock mode.```
Vladislav
плюс, к исходной задаче flock вообще никаким боком, т.к никаких диапазонов внутри файла не поддерживает
Mark ☢️
Дапахонов нет. Верно. Ну и да. Там мысль была что один процесс не может несколько лочек делать на одном файле. Всё верно.
Mark ☢️
Но для синхронизации изменений в файле вполне достаточнр
Vladislav
не было такой мысли
Vladislav
при создании этого апи комиссия затупила и подмахнула реализацию, как есть, емнип
Vladislav
Vladislav
и вообще, вложенный лок по бороде
Mark ☢️
Ну да
Mark ☢️
А чо. Как в эскулайте
Mark ☢️
И ничо. Живут же
Vladislav
более того. НЕЛЬЗЯ получить состояние лока файла по апи
Vladislav
это ваще пздц
Mark ☢️
Vladislav
приходится в procfs лазить, иначе дескрипторы течь будут
Mark ☢️
Получение состояния залочки это вобще бесполезная операция ибо оно может поменяться в следующую наносекунду
Vladislav
Mark ☢️
Что это за нах я прочитал ?
Vladislav
крч гогно этот ваш flock
Mark ☢️
Вложенных локов нет
Mark ☢️
Ксли ты сам залочил -- блять ну запомни это в переменной
Vladislav
а погли бы быть, с самым простым рефкаунтингом
Mark ☢️
Mark ☢️
И они есть в линупсе
Vladislav
но нет же, как протащили (ibm вроде), без рефкаунтинга, так и стандартизировали
Mark ☢️
Даже три штуки разных
Mark ☢️
А. Или тебе надо чтобы одни анлоком все локи очищать ?
Mark ☢️
Чо надо то
Vladislav
хотя бы в теории
Vladislav
без внешних прерываний
Mark ☢️
Блять. Ну апи там такое
Vladislav
вот ☝️
Mark ☢️
Не понял кейс
Vladislav
и все это гавнище решается одним полем в структурке лока и 2-мя строчками рефкаунтинга
Mark ☢️
Блять а чо надо то. Напиши более подробный кейс применения
Mark ☢️
Я всеравно не понял
Vladislav
* I wish world was prefect, but it's not (c) kernel code *
Vladislav
Mark ☢️
http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_lock.html
Mark ☢️
If the mutex type is PTHREAD_MUTEX_RECURSIVE, then the mutex maintains the concept of a lock count. When a thread successfully acquires a mutex for the first time, the lock count is set to one. Every time a thread relocks this mutex, the lock count is incremented by one. Each time the thread unlocks the mutex, the lock count is decremented by one. When the lock count reaches zero, the mutex becomes available for other threads to acquire. If a thread attempts to unlock a mutex that it has not locked or a mutex which is unlocked, an error will be returned.
Mark ☢️
Это штоли ?
Vladislav
да, но без pthreads
Mark ☢️
А чо. Птхреадс мутекс можно сделать в шаропамяти в замеморимапленром файле
Mark ☢️
У мну есть пример. Когда экспериментировал
Vladislav
можно конечно
Mark ☢️
Ну так и вот
Vladislav
можно контроллер сделать и цепляться к нему по unix sock или в шаропамяти