- Таймаут выполнения кода,
Trenkle, 14:51 , 14-Окт-19 (1)Короч СИ на столько крут, что для обычного смертного в нем разобраться просто анриал... С потоками разобрался, начал разбираться с тем, как собственно подвисшый поток прихлопнуть, и... толи это невозможно, толи неизвестно как. pthread_cond_timedwait делает это только изнутри самого потока, то есть с основоного потока его не заюзать. Да что там говорить, даже pthread_cancel зависшый поток закрывать отказывается. Достало это извращение, пускай на СЯХ лячкают красивенькие програмки гуру программирования, а я, нуб, написал скрипт на питоне с использованием SMBUS, без каких либо плагинов или чего либо еще, при чем сам код оказался в два раза меньше предыдущего кода на СИ, в котором я еще и модуль использовал... Всем спасибо за помощь, вопрос можно считать решенным.
- Таймаут выполнения кода,
Аноним, 15:31 , 14-Окт-19 (2)> Короч СИ на столько крут, что для обычного смертного в нем разобраться > просто анриал...... > Всем спасибо за помощь, вопрос можно считать решенным. раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, вернулся к пользованию велосипедом... хм, вроде ничего не упущено. имо, для данного case с головой хватит - man { select, read, write, close, open }; ..и до использования thread еще n-кварталов практики
- Таймаут выполнения кода,
Ф, 15:48 , 14-Окт-19 (3)>> Короч СИ на столько крут, что для обычного смертного в нем разобраться >> просто анриал... > ... >> Всем спасибо за помощь, вопрос можно считать решенным. > раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, > вернулся к пользованию велосипедом... хм, вроде ничего не упущено. > имо, для данного case с головой хватит - man { select, read, > write, close, open }; > ..и до использования thread еще n-кварталов практики там неизвестно, что внутри этого digitalread(), может тупо поллинг чипового регистра. туда таймаут вставить проще может быть, если исходники есть. Или свой read написать.
- Таймаут выполнения кода,
Аноним, 20:15 , 14-Окт-19 (5)> там неизвестно, что внутри этого digitalread(), может тупо поллинг чипового регистра. есть и такой момент, рассматривалась изначально правильная реализация уровнем ниже > туда таймаут вставить проще может быть, если исходники есть. Или свой read написать.
- Таймаут выполнения кода,
Trenkle, 00:53 , 15-Окт-19 (6)> раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, > вернулся к пользованию велосипедом... хм, вроде ничего не упущено. > имо, для данного case с головой хватит - man { select, read, > write, close, open }; > ..и до использования thread еще n-кварталов практики Вы вообще внимательно читали мое первое и второе сообщение? Предлагаю их прочитать внимательно. Я не изучаю СИ, я об этом написал, проверьте, и изучать не планирую, так как язык мне не понравился, и соответственно знания у меня поверхностные (об этом я тоже писал), по этому ваш сарказм мягко говоря неуместен. В данный момент мне с головой хватает ноды, пхп, баша, питона, и даже делфи. По этому практики не будет, ибо бессмысленно. у меня была конкретная задача, которую в моем случае на сях было реализовать быстрее и проще, так как там уже есть готовый модуль, и для компиляции достаточно билды поставить, которые я и так всегда ставлю. Я это сделал, код рабочий, но вот только при чтении зависшего чипа процесс сам зависает вхлам, иногда его даже кильнуть не получается, и приходится одноплатник перезагружать. Предлагаю следующее - напишите на предложенных вами { case, select, read, write, close, open } код, который решал-бы задачу, описанную в первом сообщении, а я после этого проверю ваш код на двух одинаковых одноплатниках - на одном чип работает нормально, а на втором чип висяк. Чисто развития ради, вполне возможно пойму свои ошибки. И кстати, это не способ выудить код, решающий мою задачу. Как я писал выше - я уже все написал на пайтоне с использованием smbus, пришлось конечно повозиться с конвертацией данных в HEX-2-10-16 бит, но ничего, справился, весь код влез чуть более чем в 100 строк кода. А, две библиотеки, которые фигурируют у меня в коде находятся здесь: https://github.com/WiringPi/WiringPi
- Таймаут выполнения кода,
Аноним, 10:10 , 15-Окт-19 (7)>> раньше пользовался велосипедом, присел в машину - где крутить педали, ничего непонятно, >> вернулся к пользованию велосипедом... хм, вроде ничего не упущено. >> имо, для данного case с головой хватит - man { select, read, >> write, close, open }; >> ..и до использования thread еще n-кварталов практики > Вы вообще внимательно читали мое первое и второе сообщение? Предлагаю их прочитать > внимательно.... > В данный момент мне с головой хватает ноды, > пхп, баша, питона, и даже делфи. По этому практики не будет, > ибо бессмысленно. видите ли, я часто пересекался в embed. - когда подобный подход приводит к мега костылям в дальнейшем, и крайне рекомендуется, из моего опыта общения с создателями подобного "фаст-фуда", подтянуть С - много благодарили в дальнейшем > у меня была конкретная задача, которую в моем случае на сях было > реализовать быстрее и проще, так как там уже есть готовый модуль, > и для компиляции достаточно билды поставить, которые я и так всегда > ставлю. Я это сделал, код рабочий, но вот только при чтении > зависшего чипа процесс сам зависает вхлам, иногда его даже кильнуть не > получается, и приходится одноплатник перезагружать. Трабля, судя по всему или в железе, и/или в криво поставленном сис. софте strace, ltrace в - помощь с выводом отладочной инфы в файл > Предлагаю следующее - напишите на предложенных вами { case, select, read, write, > close, open } код, который решал-бы задачу, описанную в первом сообщении, > а я после этого проверю ваш код на двух одинаковых одноплатниках > - на одном чип работает нормально, а на втором чип висяк. К сожалению не располагаю таким кол-вом, не нужного времени плюс отсутствие данного железа, особливо, как вашем случае проблемного. > Чисто развития ради, вполне возможно пойму свои ошибки. > И кстати, это не способ выудить код, решающий мою задачу. Как я > писал выше - я уже все написал на пайтоне с использованием > smbus, пришлось конечно повозиться с конвертацией данных в HEX-2-10-16 бит, но > ничего, справился, весь код влез чуть более чем в 100 строк > кода. > А, две библиотеки, которые фигурируют у меня в коде находятся здесь: > https://github.com/WiringPi/WiringPi
- Таймаут выполнения кода,
Павел Отредиез, 16:12 , 14-Окт-19 (4)>[оверквотинг удален] > С потоками разобрался, начал разбираться с тем, как собственно подвисшый поток прихлопнуть, > и... толи это невозможно, толи неизвестно как. pthread_cond_timedwait делает это только > изнутри самого потока, то есть с основоного потока его не заюзать. > Да что там говорить, даже pthread_cancel зависшый поток закрывать отказывается. > Достало это извращение, пускай на СЯХ лячкают красивенькие програмки гуру программирования, > а я, нуб, написал скрипт на питоне с использованием SMBUS, без > каких либо плагинов или чего либо еще, при чем сам > код оказался в два раза меньше предыдущего кода на СИ, в > котором я еще и модуль использовал... > Всем спасибо за помощь, вопрос можно считать решенным.Я бы использовал fork с вызовом проблемной функции в потомке, а родителем подождал бы пять секунд и кильнул.
|