commit acc31800bd0791bb6ab9af555a4a8f3a70eb3830
parent 51e1882844195bd08959b90814d82f5ab14e9382
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Fri, 20 Jan 2017 16:15:47 +0300
Sync model overview p2.
Diffstat:
2 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/phd-diss-ru.org b/phd-diss-ru.org
@@ -1946,6 +1946,21 @@ cite:malewicz2010pregel,seo2010hama. Преимущество конвейера
два вида сильно связанных друг с другом сущностей --- /управляющие объекты/ и
/конвейеры/, --- которые используются совместно для написания программы.
+Управляющие объекты реализуют логику (порядок выполнения) программы в методах
+~act~ и ~react~ и хранят состояние текущей ветки исполнения. Как логика так и
+состояние задаются программистом. В методе ~act~ какая-либо функция либо
+вычисляется непосредственно, либо разлагается на вложенные функции
+(представляемые подчиненными управляющими объектами), которые впоследствии
+отправляются на конвейер. В методе ~react~ подчиненные управляющие объекты,
+вернувшиеся с конвейера, обрабатываются их родительским объектом. Вызовы методов
+~act~ и ~react~ производятся асинхронно внутри потоков, присоединенных к
+конвейеру. Для каждого управляющего объекта метод ~act~ вызывается только один
+раз, и для нескольких объектов вызовы происходят параллельно друг другу, в то
+время как метод ~react~ вызывается один раз для каждого подчиненного объекта, и
+все вызовы происходят в одном потоке для предотвращения одновременного изменения
+состояния несколькими потоками (для разных родительских объектов могут
+использоваться разные потоки).
+
*** Основополагающие принципы модели
Модель конвейера обработки данных строится по следующим принципам, следование
которым обеспечивает максимальную эффективность программы.
diff --git a/phd-diss.org b/phd-diss.org
@@ -1833,16 +1833,16 @@ programme.
Kernels implement control flow logic in theirs ~act~ and ~react~ methods and
store the state of the current control flow branch. Both logic and state are
-implemented by a programmer. In ~act~ method some function is either
-sequentially computed or decomposed into subtasks (represented by another set of
-kernels) which are subsequently sent to a pipeline. In ~react~ method
-subordinate kernels that returned from the pipeline are processed by their
-parent. Calls to ~act~ and ~react~ methods are asynchronous and are made within
-threads spawned by a pipeline. For each kernel ~act~ is called only once, and
-for multiple kernels the calls are done in parallel to each other, whereas
-~react~ method is called once for each subordinate kernel, and all the calls are
-made in the same thread to prevent race conditions (for different parent kernels
-different threads may be used).
+implemented by a programmer. In ~act~ method some function is either directly
+computed or decomposed into nested functions (represented by a set of
+subordinate kernels) which are subsequently sent to a pipeline. In ~react~
+method subordinate kernels that returned from the pipeline are processed by
+their parent. Calls to ~act~ and ~react~ methods are asynchronous and are made
+within threads attached to a pipeline. For each kernel ~act~ is called only
+once, and for multiple kernels the calls are done in parallel to each other,
+whereas ~react~ method is called once for each subordinate kernel, and all the
+calls are made in the same thread to prevent race conditions (for different
+parent kernels different threads may be used).
Pipelines implement asynchronous calls to ~act~ and ~react~, and try to make as
many parallel calls as possible considering concurrency of the platform (no. of