  Aguilera, Gafni and Lamport introduced the signaling problem in [5]. In this
problem, two processes numbered 0 and 1 can call two procedures: update and
Fscan. A parameter of the problem is a two- variable function $F(x_0,x_1)$.
Each process $p_i$ can assign values to variable $x_i$ by calling update(v)
with some data value v, and compute the value: $F(x_0,x_1)$ by executing an
Fscan procedure. The problem is interesting when the domain of $F$ is infinite
and the range of $F$ is finite. In this case, some "access restrictions" are
imposed that limit the size of the registers that the Fscan procedure can
access. Aguilera et al. provided a non-blocking solution and asked whether a
wait-free solution exists. A positive answer can be found in [7].
  The natural generalization of the two-process signaling problem to an
arbitrary number of processes turns out to yield an interesting generalization
of the fundamental snapshot problem, which we call the F-snapshot problem. In
this problem $n$ processes can write values to an $n$-segment array (each
process to its own segment), and can read and obtain the value of an n-variable
function $F$ on the array of segments. In case that the range of $F$ is finite,
it is required that only bounded registers are accessed when the processes
apply the function $F$ to the array, although the data values written to the
segments may be taken from an infinite set. We provide here an affirmative
answer to the question of Aguilera et al. for an arbitrary number of processes.
Our solution employs only single-writer atomic registers, and its time
complexity is $O(n \log n)$, which is also the time complexity of the fastest
snapshot algorithm that uses only single-writer registers.
