pokk 0 Posted July 7, 2020 · Report post 58 minutes ago, jcxz said: Зачем ждать??? Клиент не должен ничего ждать. Для атомарного доступа к переменной confing 59 minutes ago, jcxz said: Клиентов может быть много. Клиенты работают без тормозов. В том то и дело клиентов несколько может быть и они все могут модифицировать confing Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted July 7, 2020 · Report post 21 минуту назад, pokk сказал: В том то и дело клиентов несколько может быть и они все могут модифицировать confing И пускай. В чём проблема? Quote Ответить с цитированием Share this post Link to post Share on other sites
pokk 0 Posted July 8, 2020 · Report post Ну вы же сами все правильно написали 19 hours ago, jcxz said: Видимо затем, что confing у автора - общая переменная, разделяемая разными процессами (задачами). А одновременный доступ к общим переменным из разных процессов чреват. Именно из за этого и хочу их разделить. Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted July 8, 2020 · Report post 6 часов назад, pokk сказал: Именно из за этого и хочу их разделить. Ну так это можно сделать любым из предложенных вариантов алгоритмов. Quote Ответить с цитированием Share this post Link to post Share on other sites
AlexandrY 0 Posted July 8, 2020 · Report post 17 hours ago, pokk said: Для атомарного доступа к переменной confing В том то и дело клиентов несколько может быть и они все могут модифицировать confing Думаю для встроенного дивайса будет злом давать модифицировать конфиги одновременно многим клиентам. Надо давать подключаться только одному за раз. Это будет проще всего, встроенные системы все же однопользовательские. Quote Ответить с цитированием Share this post Link to post Share on other sites
pokk 0 Posted July 9, 2020 · Report post 17 hours ago, jcxz said: Ну так это можно сделать любым из предложенных вариантов алгоритмов. И как это происходит в предложенно вами третьем варианте ? Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted July 9, 2020 · Report post 7 часов назад, pokk сказал: И как это происходит в предложенно вами третьем варианте ? Вы пройдитесь по нему. По шагам. И подумайте. Там же всё расписано, понятней некуда. Quote Ответить с цитированием Share this post Link to post Share on other sites
kolobok0 0 Posted July 9, 2020 · Report post On 7/7/2020 at 7:24 AM, pokk said: Задача такая, есть несколько обработчиков вызываемые через FREERTOS из разных задач. Вызывается из разных задач или от клиента вэб морды и иже? Если от задач (событий) - то это синхронизация. Если люди - это немного по другому можно решать.. (круглый) Quote Ответить с цитированием Share this post Link to post Share on other sites
pokk 0 Posted July 13, 2020 · Report post On 7/9/2020 at 6:18 PM, jcxz said: Вы пройдитесь по нему. По шагам. И подумайте. Там же всё расписано, понятней некуда. On 7/7/2020 at 10:19 PM, jcxz said: Клиент (пишущий данные в confing): 1. Модифицирует confing. 2. Устанавливает flag = 1. 3. Пингует сервер (посылает ему сообщение в мэйл-бокс). Ну вот же на первом шаге, конфликт возникает если клиента другой клиент перебьет, в момент модификации confing. Под клиентом я понимаю задачу клиент freertos. On 7/10/2020 at 4:19 AM, kolobok0 said: Вызывается из разных задач или от клиента вэб морды и иже? Если от задач (событий) - то это синхронизация. Если люди - это немного по другому можно решать.. Да из задач, одна задача вызывается, когда пользователь физически кнопку ок нажал в меню, а вторая задача вызывается, когда прилетел WEB запрос. Но это так частный случай, пока интересуюсь как в общем это разрулить. Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted July 13, 2020 · Report post 2 часа назад, pokk сказал: Ну вот же на первом шаге, конфликт возникает если клиента другой клиент перебьет, в момент модификации confing. Под клиентом я понимаю задачу клиент freertos. Ну и пускай перебивает. В любом случае - кто-то из них последним выставит flag=1 и пошлёт уведомление задаче-серверу. А она после этого пошлёт всю структуру целиком куда-то (запишет куда-то). Т.е. - в любом случае в конце-концов будет выполнена операция SaveConfing() над всей структурой целиком атомарно. Аналогичным образом работает механизм эксклюзивного доступа в Cortex-M (LDREX/STREX). Проблемы могут возникнуть только в случае если возможна ситуация, когда эти клиентские процессы очень часто непрерывно модифицируют и модифицируют confing, без пауз. Но воде как в вашем случае это не страшно, так как пользователям не свойственно жать на кнопки с частотами в несколько кГц часами. Quote Ответить с цитированием Share this post Link to post Share on other sites