это действительно хорошо.

с Как я могу убедиться, что мое приложение является поточно-ориентированным? Есть ли у них какие-либо общие практики, методы тестирования, что следует избегать, что нужно искать?

Фон В настоящее время я занимаюсь разработкой серверного приложения, которое выполняет ряд фоновых задач в разных потоках и взаимодействует с клиентами, используя Indy (используя другую связку автоматически сгенерированных потоков для связи). Поскольку приложение должно быть очень доступным, аварийное завершение программы - очень плохая вещь, и я хочу убедиться, что приложение является поточно-ориентированным. Неважно, что время от времени я обнаруживаю фрагмент кода, который генерирует исключение, которого никогда не было раньше, и в большинстве случаев я понимаю, что это какая-то ошибка синхронизации, из-за которой я забыл правильно синхронизировать свои объекты. Отсюда мой вопрос, касающийся лучших практик, тестирования безопасности потоков и тому подобных вещей.

Mghie: Спасибо за ответ! Возможно, мне следует быть немного более точным. Просто чтобы прояснить, я знаю о принципах многопоточности, я использую синхронизацию (мониторы) во всей моей программе и знаю, как отличить проблемы потоков от других проблем реализации. Но, тем не менее, я постоянно забываю время от времени добавлять правильную синхронизацию. Просто для примера, я использовал функцию сортировки RTL в своем коде. Выглядело что-то вроде

FKeyList.Sort (CompareKeysFunc);

Оказывается, мне пришлось синхронизировать FKeyList при сортировке. Это просто не пришло мне в голову при первоначальной написании этой простой строки кода. Это то, о чем я хочу поговорить. В каких местах легко забыть добавить код синхронизации? Как ВЫ убедитесь, что вы добавили код синхронизации во все важные места?

Ответы на вопрос(1)

Ваш ответ на вопрос