Igor
Таймер не выполняется до конца соответственно и основной цикл плеера тоже
Igor
это чтение, а не запись
Mad
Snusmumriken
Не могу сказать.
Igor
твой операционка за день читает больше, чем этот скрипт за условных 10 часов
Snusmumriken
Твой браузер например, тысячи раз в секунду пишет на диск, сохраняет кукисы, состояния машины, кеширует и ещё кучу всего делает.
Mad
Snusmumriken
А раз в секунду — это совершенно незначительно, я гарантирую.
Оооо, mpv читает поток с диска. Делает это много раз в секунду по маленькому кусочку )
Mad
Snusmumriken
Кек.
Mad
Вообщем #2 остается - Если я направлю поток команд - то они все адекватно интерпретируются, друг за другом, все, это же все таки First In First Out
Mad
я это делаю вообще для использования в скрипте, и задержка в одну секунду - значительна
Igor
при неблокирующем доступе к пайпу твой first in first out сыпется, потому что команда может не полностью прочитаться
Igor
в теории
Snusmumriken
Mad
Igor
если прям так важен fifo, подрубай lua-lanes и в отдельном потоке верти всё это дело
Igor
а через линду команды посылай в основной
Snusmumriken
Для убийства тредов lanes нужно чтобы выполнялись луёвые команды, это уже проходили ))
Igor
это да
Igor
но при команде quit можно сделать чтобы и сам тред завершался
Snusmumriken
Я уже писал асинхронные хттп-запросы, которые в цикле гоняются до выполнения, чтобы иметь возможность убивать потоки с ланесом из родителя.
Snusmumriken
(проблемы многопоточки)
Snusmumriken
Ммм, у тебя даже событие shutdown не вызовется, до него дело не дойдёт.
Mad
Короче я придумал самое удобное решение
Snusmumriken
Не использовать fifo-io? )
Mad
в пизду этот lua, в пизду этот mpv, в пизду этот файл, в пизду этот quit, я добавлю горячую клавишу которая будет делать echo quit > ars и так буду выходить из mpv. В прочем я это и так собирался делать, за исключением того что больше не будет возможности выходить просто так.
Snusmumriken
Хе _
Mad
Mad
Snusmumriken
Snusmumriken
Mad
Snusmumriken
Это просто выход из плеера на кнопку "x"
Mad
WDMR
https://www.linux.org.ru/forum/development/16874173
Mad
Snusmumriken
это я понял
Смотри. Сама луа по себе простая и прямая. Как питон, например. Как перл пых или лисп. Даётся файл, все команды из него просто исполняются, и из файла выходится. Всё. Так работает стандартный интерпретатор. Никакой асинхронности, просто команды, просто ввод-вывод.
Но это апишка программы mpv. Программа имеет события и уже не просто прогоняет файл, а собирает из файла функции (ты их регистрируешь), и эта же программа потом дёргает зареганные тобой функции. Ты регаешь функцию-биндинг на кнопку — она её запоминает и вызовет когда будет нажата кнопка.
Ты регаешь функцию на таймер программы — программа запомнит и будет вызывать её по таймеру.
Логика тупейшая.
Igor
WDMR
Igor
fifo это есть io механизм))
Igor
я обобщил просто
Igor
os.execute("killall mpv") ¯\_(ツ)_/¯
Snusmumriken
"Хочу жевать кактус, хочу быть сам себе злобным буратиной".
Я уже написал рабочее решение, но ты назвал его говнокодом. Хотя это единственный и весьма корректный вариант для твоих задач.
Snusmumriken
Mad
Snusmumriken
Файл всё ещё fifo или обычный?
Igor
fifo это строго системозависимая штука, ни один кроссплатформенный скриптовой язык из тех, что я знаю, не пихает такие апишки в стандартную библиотеку свою.
Mad
Snusmumriken
Тогда что тебе не помогло? ))
Igor
научить тот же lua работать с этими приколами можно только путём подключения сторонних сишных библиотек
Mad
Snusmumriken
А оно выполнено? Ну, в смысле ты его подключил?
Mad
Snusmumriken
А mpv в это время занят чтением fifo-файла и поэтому ничего не выполняет и вообще зависший, да?
Igor
Кстати, я не уверен, но вроде mpv таймеры в рилтайм потоке крутит
Mad
Igor
ну, то есть с приоритетом realtime
Snusmumriken
Ну в общем, тут медицина бессильна, полагаю можно идти на паузу.
Snusmumriken
Делов в общем-то на пять минут, но "хочу fifo" всё портит. Не нужен тут тебе fifo.
Получается буквально как в анекдоте:
—Доктор, у меня всё плохо, жена пилит, дети пилят, работа пилит, пила пилит, что делать? — Поставьте посреди коридора козу (fifo-файл) и приходите через неделю. — Доктор, доктор, за неделю меня не только жена запилила и дети запилили и всё остальное запилило, так теперь посреди коридора ещё и коза (fifo-файл) стоит и орёт! Что мне делать? — Уберите козу (fifo-файл) и приходите снова. — Ну как, голубчик? — Хорошо! Коза (fifo-файл) не орёт!
Читай себе обычный файл раз в секунду и всё заебумба. Он не блокирует и этим прекрасен.
WDMR
А зачем вообще изначально тут эта фифа?
Snusmumriken
Чтобы не говнокод!
Потому что это линукс-вэй и вообще.
Чтение с диска убивает диск!!!1 (не особо)
WDMR
Snusmumriken
Нет )
Snusmumriken
Но чтение!
Mad
Snusmumriken
Карочи, самое время взять здоровый болт и положить на ос-специфичную ерунду.
Igor
Tony
Snusmumriken
@ItManGlass насколько ты живой?
Egor
Приветы, подскажите, а как на луа разделить через пробел строку, НО!!
например:
сегодня хороший, теплый день. Куча всяких сообщений
Должно выйти такое:
a='сегодня'
b='хороший,'
c='теплый день. Куча всяких сообщений'
то есть по пробелу делим только первые N слов, а остаток в какую-то переменную запихать
конечно в лоб можно решить через циклы, типа первый второй N-ый шаг пропихать по переменным а все остальное пихаем в переменную какую-то, но вдруг есть покрасивее подход
fgntfg
Регулярки