IConsequentDataStorage: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
{{interface|IConsequentDataStorage}}
{{interface|IConsequentDataStorage}}
Блоки данных накопителя адресуются последовательно, один-за другим. Однородность данных и произвольный доступ не гарантируется.
При наличии множества потоков ввода/вывода из накопителя изменения, выполненные с использованием одного экземпляра потока могут приводить к изменениям в адресации, выполняемой другими экземплярами.
[[Файл:IConsequentDataStorage-access.svg|500px|thumb|right|Пример последовательного доступа к данным.]]
На рисунке справа показана возможная реализация интерфейса [[IConsequentDataStorage]]. Чтение осуществляется с использованием двух ''разных'' потоков чтения - <tt>is1</tt> и <tt>is2</tt> - но ассоциированных с одной и той же реализацией [[IConsequentDataStorage]]. Сначала осуществляется чтение с использованием <tt>is1</tt>, затем - <tt>is2</tt>, затем - снова <tt>is1</tt>. Аналогично осуществляется запись - с использованием двух разных потоков записи - <tt>os1</tt> и <tt>os2</tt>. Эти потоки агрегируются той же реализацией последовательного накопителя данных, что и потоки чтения. То, к какому блоку данных осуществляется доступ, определяется очередностью чтения и записи.
Реализация накопителя, которая поддерживает интерфейс [[IConsequentDataStorage]] также поддерживает интерфейсы [[IConsequentDataStorageInput]] и [[IConsequentDataStorageOutput]], которые доступны через использование метода [[IDataStorage::RepresentAs]], вызываемого над {{cpp_this}}.
{{sa_list_begin}}
{{sa_list_begin}}
{{sa_list_add|IConsequentDataStorageInput}}
{{sa_list_add|IConsequentDataStorageInput}}
Строка 6: Строка 15:
{{sa_list_add|ConsequentDataStorageOwn}}
{{sa_list_add|ConsequentDataStorageOwn}}
{{sa_list_end}}
{{sa_list_end}}
Блоки данных накопителя адресуются последовательно, один за другим. Однородность данных и произвольный доступ не гарантируется.
При наличии множества потоков ввода/вывода из накопителя изменения, выполненные с использованием одного экземпляра потока могут приводить к изменениям в адресации, выполняемой другими экземплярами.
[[Файл:IConsequentDataStorage-access.svg|500px|thumb|right|Пример последовательного доступа к данным.]]
На рисунке справа показана возможная реализация интерфейса [[IConsequentDataStorage]]. Чтение осуществляется с использованием двух ''разных'' потоков чтения - <tt>is1</tt> и <tt>is2</tt> - но ассоциированных с одной и той же реализацией [[IConsequentDataStorage]]. Сначала осуществляется чтение с использованием <tt>is1</tt>, затем - <tt>is2</tt>, затем - снова <tt>is1</tt>. Аналогично осуществляется запись - с использованием двух разных потоков записи - <tt>os1</tt> и <tt>os2</tt>. Эти потоки агрегируются той же реализацией последовательного накопителя данных, что и потоки чтения. То, к какому блоку данных осуществляется доступ, определяется очередностью чтения и записи.

Версия 17:53, 15 августа 2019

Интерфейс для чтения и записи в накопитель последовательно расположенных данных.

Методы
МетодОписание
ReadСоздает поток чтения, связанный с накопителем данных.
WriteСоздает поток записи в накопитель данных.
Наследует открыто
КлассОписание
Базовый интерфейс накопителя данных.

Блоки данных накопителя адресуются последовательно, один-за другим. Однородность данных и произвольный доступ не гарантируется.

При наличии множества потоков ввода/вывода из накопителя изменения, выполненные с использованием одного экземпляра потока могут приводить к изменениям в адресации, выполняемой другими экземплярами.

Пример последовательного доступа к данным.

На рисунке справа показана возможная реализация интерфейса IConsequentDataStorage. Чтение осуществляется с использованием двух разных потоков чтения - is1 и is2 - но ассоциированных с одной и той же реализацией IConsequentDataStorage. Сначала осуществляется чтение с использованием is1, затем - is2, затем - снова is1. Аналогично осуществляется запись - с использованием двух разных потоков записи - os1 и os2. Эти потоки агрегируются той же реализацией последовательного накопителя данных, что и потоки чтения. То, к какому блоку данных осуществляется доступ, определяется очередностью чтения и записи.

Реализация накопителя, которая поддерживает интерфейс IConsequentDataStorage также поддерживает интерфейсы IConsequentDataStorageInput и IConsequentDataStorageOutput, которые доступны через использование метода IDataStorage::RepresentAs, вызываемого над this.

См. также
IConsequentDataStorageInputИнтерфейс накопителя последовательно расположенных данных только для чтения.
IConsequentDataStorageOutputИнтерфейс записи в накопитель последовательно расположенных данных.
ConsequentDataStorageRefСсылочный адаптер, определенный над интерфейсом IConsequentDataStorage.
ConsequentDataStorageOwnВладеющий адаптер, определенный над интерфейсом IConsequentDataStorage.