40
ГЛАВА 2. СОСТАВНЫЕ ЧАСТИ ОБЪЕКТНОГО ПОДХОДА
При легкой многопоточности потоки внутри процесса разделяют
общее адресное пространство.При этом возникает проблема обеспече-
ния конкурентного доступа к данным из разных потоков. Программа,
работающая в системе с легкой многопоточностью, представляет из
себя совокупность из нескольких потоков управления и точек синхро-
низации. Точки синхронизации обеспечивают целостность совместно
используемых данных и взаимодействие потоков между собой.
В объектно-ориентированной системе, использующей принципы и
средства параллелизма, потоки управления представляются активны-
ми объектами, которые являются инициаторами всех происходящих в
системе действий. Таким образом, объекты делятся на активные (явля-
ющиеся своего рода отдельными вычислительными центрами) и пас-
сивные, на которые направленно воздействие активных объектов.
Параллелизм дает возможность объектам действовать одновремен-
но. На основе этой идеи,Буч дает следующее определение параллелиз-
ма:
Параллелизм — это свойство, отличающее активные объекты от
пассивных.
Как только в систему введен параллелизм, сразу возникает вопрос
о синхронизации активных объектов друг с другом и последовательны-
ми пассивными объектами. Например, если два объекта посылают со-
общения третьему, то должен существовать какой-то механизм, гаран-
тирующий, что объект, на который направлено действие, не разрушит-
ся при одновременной попытке двух активных объектов изменить его
состояние. В этом вопросе соединяются абстракция, инкапсуляция и
параллелизм. В параллельных системах недостаточно определить по-
ведение объекта, надо еще принять меры, гарантирующие, что он не
будет «растерзан на части» несколькими независимыми процессами.
Параллелизм может обеспечиваться как средствами языка (Java,Ada,
Smalltalk), так и специально написанными библиотеками, которые ис-
пользуются при написании параллельной системы с использованием
языков
, не имеющих встроенной поддержки этого принципа (C++).
Следует, однако, отметить, что даже если язык имеет встроенную