Здравствуйте, bnk, Вы писали:
bnk>что имеется в виду под приоритетами?
В ядре NT так называются режимы выполнения кода (execution priority). Самый низкий — у пользовательских потоков, самый высокий — у наиболее важных системных. Помимо количественной разницы (кто кого может вытеснять), есть и качественная: при очередном повышении приоритета код может потерять возможность использования части ядерных API и обращения к части ресурсов. Соответственно, стек вызовов функций/методов должен строиться так, чтобы всё, что ниже, работало либо на том же приоритете, либо на более высоком, и использовало только ресурсы, доступные на соответствующих приоритетах.
Например, один из способов захвата блокировки (spin lock) повышает приоритет потока. Если есть код "захват спинлока — выполнение группы операций — освобождение спинлока", то при выносе каких-либо операций этой группы в отдельные функции/методы необходимо следить за тем, чтобы они вызывались только на определенных приоритетах, а это сразу ограничивает возможности повторного использования кода. И с C++ нет возможности навесить на функции и объекты какие-нибудь атрибуты, чтобы следить, кто кого вызывает и использует. Кое-то проверяют статические анализаторы, но далеко не все.
bnk>Смысл разбиения на функции — это чтобы они входили на один экран, чтобы легче было понять что функция делает.
Это понятно. Я б с удовольствием наделал мелких функций, но в описанных выше условиях отслеживать все возможные пути вызовов очень геморройно, хоть у меня все и утыкано assert'ами.
bnk>Также чтобы их можно было протестировать независимо друг от друга например.
У меня не так много функций, зависимых только от параметров. Большая часть работает с членами классов, и они могут вызываться не только из кода, который полностью контролирую я, но и из запросов, приходящих от системы, а запросы эти могут приходить на разных приоритетах, с разной доступностью ресурсов.
bnk>Чем-то похоже на чтение книг типа "Искусство войны".
Подобные книги в основном описывают стратегию, а у меня весь затык на тактике.