Многопоточность Delphi - какие части кода нужно защищать / синхронизировать?

до сих пор я думал, что любая операция, выполняемая над «общим» объектом (общим для нескольких потоков), должна быть защищена с помощью «синхронизации», несмотря ни на что. Видимо, я ошибался - в коде, который я недавно изучаю, много классов (поточно-ориентированных, как утверждает Автор), и только один из них использует Критическую секцию почти для каждого метода.

Как мне найти какие части / методы моего кода должны быть защищены с помощью CriticalSection (или любого другого метода), а какие нет?

Пока я не наткнулся на какое-либо интересное объяснение / статью / заметку в блоге, все результаты Google:

а) примеры синхронизации между потоком и графическим интерфейсом. От простого индикатора выполнения до самого сложного, но урок очевиден: каждый раз, когда вы открываете / изменяете свойство компонента GUI, делайте это в «Синхронизировать». Но не более того.

б) статьи, объясняющие критические разделы, мьютексы и т. Д. Просто разные подходы к защите / синхронизации.

в) Примеры очень-очень простых потоковобезопасных классов (потокобезопасный стек или список) - все они сделайте то же самое - реализуйте методы блокировки / разблокировки, которые входят / выходят из критического раздела и возвращают фактический указатель стека / списка при блокировке.

Теперь я ищу объяснение , какие части кода должны быть защищены .

может быть в форме кода;) но, пожалуйста, не предоставляйте мне еще одно "использование Synchronize для обновления индикатора выполнения" ...;)

спасибо!

6
задан migajek 5 October 2010 в 23:02
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: