Перейти к содержанию
    

Удобная модификация параметров структуры confing c зашитой

58 minutes ago, jcxz said:

Зачем ждать??? :wacko2: Клиент не должен ничего ждать.

Для атомарного доступа к переменной confing

59 minutes ago, jcxz said:

Клиентов может быть много. Клиенты работают без тормозов.

В том то и дело клиентов несколько может быть и они все  могут модифицировать confing

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 минуту назад, pokk сказал:

В том то и дело клиентов несколько может быть и они все  могут модифицировать confing

И пускай. В чём проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вы же сами все правильно написали

19 hours ago, jcxz said:

Видимо затем, что confing у автора - общая переменная, разделяемая разными процессами (задачами). А одновременный доступ к общим переменным из разных процессов чреват.  

Именно из за этого и хочу их разделить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, pokk сказал:

Именно из за этого и хочу их разделить.

Ну так это можно сделать любым из предложенных вариантов алгоритмов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, pokk said:

Для атомарного доступа к переменной confing

В том то и дело клиентов несколько может быть и они все  могут модифицировать confing

Думаю для встроенного дивайса будет злом давать модифицировать конфиги одновременно многим клиентам. 
Надо давать подключаться только одному за раз.
Это будет проще всего, встроенные системы все же однопользовательские. 
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, jcxz said:

Ну так это можно сделать любым из предложенных вариантов алгоритмов.

И как это происходит в предложенно вами третьем варианте ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, pokk сказал:

И как это происходит в предложенно вами третьем варианте ?

Вы пройдитесь по нему. По шагам. И подумайте. Там же всё расписано, понятней некуда.  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/7/2020 at 7:24 AM, pokk said:

Задача такая, есть несколько обработчиков вызываемые через FREERTOS  из разных задач.

Вызывается из разных задач или от клиента вэб морды и иже? Если от задач (событий) - то это синхронизация. Если люди - это немного по другому можно решать..

 

(круглый)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 запрос. Но это так частный случай, пока интересуюсь как в общем это разрулить. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, pokk сказал:

Ну вот же на первом шаге, конфликт возникает если клиента другой клиент перебьет, в момент модификации confing. Под клиентом я понимаю задачу клиент freertos.

Ну и пускай перебивает. В любом случае - кто-то из них последним выставит flag=1 и пошлёт уведомление задаче-серверу. А она после этого пошлёт всю структуру целиком куда-то (запишет куда-то). Т.е. - в любом случае в конце-концов будет выполнена операция SaveConfing() над всей структурой целиком атомарно.

Аналогичным образом работает механизм эксклюзивного доступа в Cortex-M (LDREX/STREX).

Проблемы могут возникнуть только в случае если возможна ситуация, когда эти клиентские процессы очень часто непрерывно модифицируют и модифицируют confing, без пауз. Но воде как в вашем случае это не страшно, так как пользователям не свойственно жать на кнопки с частотами в несколько кГц часами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...