Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Определение контекстно-связанных объектов
Определение контекстно-связанных объектов
Чтобы определить класс (SportsCarTS), автоматически поддерживающий потоковую безопасность, без добавления в него сложной логики синхронизации патока при реализации членов, следует взять объект, производный от ContextBoundObject, и применить атрибут [Synchronization], как показано ниже.
using System.Runtime.Remoting.Contexts;
// Этот контекстно-связанный тип будет загружен только
// в синхронизированном (т.е. многопоточном) контексте.
[Synсhronization]
public class SportsCarTS: ContextBoundObject{}
Типы с атрибутом [Synchronization] загружаются в контексте сохранения потоков. С учетом специальных контекстуальных требований типа класса MyThreadSafeObject представьте себе те проблемы, которые должны возникнуть, если размещенный объект перевести из синхронизированного контекста в несинхронизированный. Объект вдруг перестанет быть защищенным в отношении потоков и превратится в потенциального нарушителя целостности данных, поскольку другие потоки могут пытаться взаимодействовать с этим ссылочным объектом (теперь уже не сохраняющим потоки). Для гарантии того, что среда CLR не переместит объекты SportsCarTS за рамки синхронизированного контекста, достаточно взять объект, производный от ContextBoundObject.
- 6. Тайная жизнь объектов
- Растущий подсолнечник - присвоение родителей и группирование объектов
- 6.1. Создание объектов
- Анимация видимости объектов
- 17. Встречи, посвященные принятию решений Достижение согласия и определение обязательств
- Клиентская конфигурация для активизированных клиентом объектов
- Альтернативные хосты для удаленных объектов
- Глава 5. Изучение взаимодействия объектов
- Определение базового уровня NPS
- 14.9. Определение взлома
- Иерархия объектов в InterBase
- 1.2. Определение количества информации. Единицы измерения количества информации