The process network (PN) domain is an experimental implementation of process network model of computation. The PN domain is a superset of the synchronous dataflow (SDF), Boolean dataflow (BDF), and dynamic dataflow (DDF) domains, as shown in Figure 1-2. Thus, any SDF, BDF, or DDF star can be used in the PN domain. In the dataflow subdomains, stars represent dataflow actors, which consume and produce a finite number of particles when they are fired. In the PN domain, stars represent processes, which consume and produce (possibly infinite) streams of particles. When a dataflow actor from the SDF, BDF or DDF domain is used in a PN system, a dataflow process is created that repeatedly fires that actor. A separate thread of execution is created for each process. Thread synchronization mechanisms ensure that a thread attempting to read from an empty input is automatically suspended, and threads automatically wake up when data becomes available.
The current implementation of the PN domain is based on a user-level POSIX thread library called Pthreads [Mue93,Mue95]. By choosing the POSIX standard, we improve the portability of the PN domain. Several workstation vendors already include an implementation of POSIX threads in their operating systems, such as Solaris 2.5 and HP-UX 10. Having threads built into the operating system, as opposed to a user-level library implementation, offers the opportunity for automatic parallelization on multiprocessor workstations. That is, the same program would run on uniprocessor workstations and multiprocessor workstations without needing to be recompiled. When multiple processors are available, multiple threads can execute in parallel. Even on uniprocessor workstations, multi-threaded execution offers the advantage that communication can be overlapped with computation.