
Здравствуйте. Это заключительная статья о многопоточном окружении FreeRTOS в которой я расскажу про мьютексы и критические секции.
Ссылки на предыдущие части:
Engineering Manager
Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart
/*
* Когда мы дойдем сюда, наша структура уже будет готова.
* К тому же, мы создали достаточно большой буфер, в который
* можно засунуть все входные данные, плюс есть немного места
* про запас. Я не уверен, понадобится ли оно, но хуже не будет.
* Теперь нам надо обновить счетчик, предполагая, что клиент
* уже прочитал значение, но еще не использовал его. Сначала
* я хотел переложить обязанность инкремента на плечи вызывающего
* кода. С другой стороны, это означает, что инкремент нужно делать всем,
* поэтому я решил, что будет лучше перенести его сюда. Но мы можем
* пересмотреть это решение позже, если вдруг кому-то из внешних функций
* захочется делать инкремент самому.
*/
counter++; // инкрементировать счетчик для потребляемого значения
/*
* Теперь нужно просмотреть весь буфер с данными. Для этой
* операции нам понадобится еще один индекс, иначе перед
* выходом из функции мы потеряем начальное значение.
* Я хотел назвать эту переменную ‘ref’, потому что в некотором
* смысле мы будем обращаться с ней как со ссылкой на данные.
* В конце концов я пришел к выводу, что самым лучшим
* названием для нее будет ‘pos’. Если что, я не против обсудить
* это решение.
*/
char* pos = buffer; // начинаем наш обход данных
/*
Теперь, мы...
*/
«Когда мы не переживаем о происходящем, все встает на свои места. Мир принадлежит тем, кто не переживает. Если же напрягаться, то завоевать мир не удастся.» — Лао Цзы.