Re[6]: Проектирование, переписывание, прокрастинация :)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 22.08.21 19:25
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>что имеется в виду под приоритетами?


В ядре NT так называются режимы выполнения кода (execution priority). Самый низкий — у пользовательских потоков, самый высокий — у наиболее важных системных. Помимо количественной разницы (кто кого может вытеснять), есть и качественная: при очередном повышении приоритета код может потерять возможность использования части ядерных API и обращения к части ресурсов. Соответственно, стек вызовов функций/методов должен строиться так, чтобы всё, что ниже, работало либо на том же приоритете, либо на более высоком, и использовало только ресурсы, доступные на соответствующих приоритетах.

Например, один из способов захвата блокировки (spin lock) повышает приоритет потока. Если есть код "захват спинлока — выполнение группы операций — освобождение спинлока", то при выносе каких-либо операций этой группы в отдельные функции/методы необходимо следить за тем, чтобы они вызывались только на определенных приоритетах, а это сразу ограничивает возможности повторного использования кода. И с C++ нет возможности навесить на функции и объекты какие-нибудь атрибуты, чтобы следить, кто кого вызывает и использует. Кое-то проверяют статические анализаторы, но далеко не все.

bnk>Смысл разбиения на функции — это чтобы они входили на один экран, чтобы легче было понять что функция делает.


Это понятно. Я б с удовольствием наделал мелких функций, но в описанных выше условиях отслеживать все возможные пути вызовов очень геморройно, хоть у меня все и утыкано assert'ами.

bnk>Также чтобы их можно было протестировать независимо друг от друга например.


У меня не так много функций, зависимых только от параметров. Большая часть работает с членами классов, и они могут вызываться не только из кода, который полностью контролирую я, но и из запросов, приходящих от системы, а запросы эти могут приходить на разных приоритетах, с разной доступностью ресурсов.

bnk>Чем-то похоже на чтение книг типа "Искусство войны".


Подобные книги в основном описывают стратегию, а у меня весь затык на тактике.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.