Многопоточный доступ
От: AndreyFedotov Россия  
Дата: 23.08.04 08:45
Оценка:
Всем приятного дня-утра-вечера-ночи!
При написании многопоточных программ, тем более систем возникает потребность обеспечить многопоточный доступ к объектам (например их состоянию) или каким то образом упорядочить последовательность вызова методов.
Простейшие возможности, какие видятся, для обеспечения многопоточного доступа — это или защита доступа к состоянию объекта в самом объекте или заведомо однопоточных объект, синхронизация доступа к которому осуществляется извне.
Можно поступить следующим образом — выставлять интерфейсы для доступа к состоянию — для которых гарантируется, что через него допустимы вызовы любых методов и в любой последовательности (допустимой протоколом использования интерфейса), а при запросе такого интерфейса — блокировать доступ к состоянию объекта, пока ссылка на интерфейс не будет освобождена. (Правда это всё равно не спасёт от блокировки на более высоком уровне).
Хотелось бы посмотреть — кто и как решает подобные задачи. Возможно, что существуют методы и подходы (а возможно и шаблоны) — как организовывать архитектуру программы (или системы) — для решения подобных задач на архитектурном уровне.
Интересно было бы узнать Вашу точку зрения.
Заранее спасибо за ответы.
С Уважением, Андрей
Re: Многопоточный доступ
От: mselez  
Дата: 25.08.04 14:02
Оценка: 1 (1)
Здравствуйте, AndreyFedotov, Вы писали:

AF> Простейшие возможности, какие видятся, для обеспечения многопоточного доступа — это или защита доступа к состоянию объекта в самом объекте или заведомо однопоточных объект, синхронизация доступа к которому осуществляется извне.


Защиту доступа в самом обьекте легче реализовать, а синхронизация доступа извне может быть более гибкой. Например, к одному обьекту одновременно обращаются два процесса — "читателя". В первом случае они должны читать обьект поочереди. Во втором варианте проще снять блокировку, раз мы знаем, что это оба процесса читающие.
Re[2]: Многопоточный доступ
От: AndreyFedotov Россия  
Дата: 25.08.04 14:18
Оценка:
Здравствуйте, mselez, Вы писали:

M>Здравствуйте, AndreyFedotov, Вы писали:


AF>> Простейшие возможности, какие видятся, для обеспечения многопоточного доступа — это или защита доступа к состоянию объекта в самом объекте или заведомо однопоточных объект, синхронизация доступа к которому осуществляется извне.


M>Защиту доступа в самом обьекте легче реализовать, а синхронизация доступа извне может быть более гибкой. Например, к одному обьекту одновременно обращаются два процесса — "читателя". В первом случае они должны читать обьект поочереди. Во втором варианте проще снять блокировку, раз мы знаем, что это оба процесса читающие.

Спасибо. В общем то согласен — и использую оба метода. Но возможно что есть готовые архитектурные решения для организации внешнего доступа?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.