2025 Volume 33 Pages 804-814
Reactive programming (RP) is a programming paradigm that abstracts time-varying values to describe data flows from input to output in a declarative manner. However, in distributed RP, update propagation takes time and introduces delays. Accordingly, there are various ways to reconcile execution results under delay. This study explores SignalJ, an RP language leveraging timestamps for consistent execution results. This method easily realizes persistent time-varying values that allow retrogression of computation results into the past. However, in situations where the signal network changes dynamically, inconsistencies arise unless update propagation through the network is treated as an atomic process. To address this, we propose an algorithm that precisely blocks update propagation across the entire connected data flow until the ongoing propagations are finished and the switch process for signal networks is completed. This is necessary to realize an atomic process in a situation wherein each node of the data flow only possesses knowledge of its neighbors. This maintains the consistency of update propagation during network changes. We evaluated the execution time of this algorithm. Even though the blocking overhead is not small in cases where there are long paths from sources to sinks in the network, this overhead can be reduced by introducing a caching mechanism into persistent time-varying values.