7. Поток обработки

Когда один объект внутри функции вызывает другую функцию, а та вызывает третью и т.д., образуется цепочка вызовов функций. Количество вызовов в цепочке называется длиной цепочки вызовов.

ПРИМЕЧАНИЕ

В концепции ООП учитывается многозадачность, поэтому более общим случаем вызова функции считается отправка сообщения одного объекта другому. Сообщение может быть отправлено синхронно или асинхронно.

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

И ещё один момент: на практике невозможно написать алгоритм, который был бы абстрагирован от того, как отправляется сообщение: синхронно или асинхронно. Примеры таких алгоритмов можно привести, но они не являются показателем в общем случае.

Показателем явилась бы примерно следующая абстракция.

Например, в Windows есть функции синхронной и асинхронной отправки сообщений – SendMessage и PostMessage (в X11 – SendEvent и PostEvent соответственно). А пусть бы объект сам определял, в каком режиме ему обрабатывать сообщения, синхронно или асинхронно? Это существенно упростило бы его интерфейс. Увы, такой подход не позволяет работать с этим объектом, как с объектом, с которым можно работать синхронно, то есть без обеспечения обратной связи.

Многозадачность и способы отправки сообщений, как свойства операционной системы, выходят за рамки WYCIWYC, потому исключены из списка понятий данной концепции. Они точно также являются лишними понятиями в ООП. Свидетельством тому то, что поток и сообщение в подавляющем большинстве языков, реализующих ООП, – это классы, имплементирующие соответствующую функциональность.

Поток необязательно может быть объектом. То, что в C++ потоки – не средство языка, только делает этот язык более гибким, чем сама концепция ООП.

Выполнение алгоритма на уровне цепочки вызовов, то есть с точки зрения передачи управления между объектами, называется потоком обработки.

Далее

Автор: Андрей Шаройко <vanyamboe@gmail.com>