pokk 0 7 июля, 2020 Опубликовано 7 июля, 2020 · Жалоба 58 minutes ago, jcxz said: Зачем ждать??? Клиент не должен ничего ждать. Для атомарного доступа к переменной confing 59 minutes ago, jcxz said: Клиентов может быть много. Клиенты работают без тормозов. В том то и дело клиентов несколько может быть и они все могут модифицировать confing Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 7 июля, 2020 Опубликовано 7 июля, 2020 · Жалоба 21 минуту назад, pokk сказал: В том то и дело клиентов несколько может быть и они все могут модифицировать confing И пускай. В чём проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 8 июля, 2020 Опубликовано 8 июля, 2020 · Жалоба Ну вы же сами все правильно написали 19 hours ago, jcxz said: Видимо затем, что confing у автора - общая переменная, разделяемая разными процессами (задачами). А одновременный доступ к общим переменным из разных процессов чреват. Именно из за этого и хочу их разделить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 июля, 2020 Опубликовано 8 июля, 2020 · Жалоба 6 часов назад, pokk сказал: Именно из за этого и хочу их разделить. Ну так это можно сделать любым из предложенных вариантов алгоритмов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 8 июля, 2020 Опубликовано 8 июля, 2020 · Жалоба 17 hours ago, pokk said: Для атомарного доступа к переменной confing В том то и дело клиентов несколько может быть и они все могут модифицировать confing Думаю для встроенного дивайса будет злом давать модифицировать конфиги одновременно многим клиентам. Надо давать подключаться только одному за раз. Это будет проще всего, встроенные системы все же однопользовательские. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 17 hours ago, jcxz said: Ну так это можно сделать любым из предложенных вариантов алгоритмов. И как это происходит в предложенно вами третьем варианте ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 7 часов назад, pokk сказал: И как это происходит в предложенно вами третьем варианте ? Вы пройдитесь по нему. По шагам. И подумайте. Там же всё расписано, понятней некуда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба On 7/7/2020 at 7:24 AM, pokk said: Задача такая, есть несколько обработчиков вызываемые через FREERTOS из разных задач. Вызывается из разных задач или от клиента вэб морды и иже? Если от задач (событий) - то это синхронизация. Если люди - это немного по другому можно решать.. (круглый) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 13 июля, 2020 Опубликовано 13 июля, 2020 · Жалоба 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 запрос. Но это так частный случай, пока интересуюсь как в общем это разрулить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 июля, 2020 Опубликовано 13 июля, 2020 · Жалоба 2 часа назад, pokk сказал: Ну вот же на первом шаге, конфликт возникает если клиента другой клиент перебьет, в момент модификации confing. Под клиентом я понимаю задачу клиент freertos. Ну и пускай перебивает. В любом случае - кто-то из них последним выставит flag=1 и пошлёт уведомление задаче-серверу. А она после этого пошлёт всю структуру целиком куда-то (запишет куда-то). Т.е. - в любом случае в конце-концов будет выполнена операция SaveConfing() над всей структурой целиком атомарно. Аналогичным образом работает механизм эксклюзивного доступа в Cortex-M (LDREX/STREX). Проблемы могут возникнуть только в случае если возможна ситуация, когда эти клиентские процессы очень часто непрерывно модифицируют и модифицируют confing, без пауз. Но воде как в вашем случае это не страшно, так как пользователям не свойственно жать на кнопки с частотами в несколько кГц часами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться