A system for notifying one or more observers (110, 112, 118) of a state change, the system comprising: a plurality of processes (102, 104), each of the plurality of processes including one or more subjects (114, 120, 122), one or more observers (110, 112, 118) and a scheduler (108, 116); and a shared memory space comprising a plurality of buffers (124, 126, 128), the shared memory space being accessible by the plurality of processes (102, 104), wherein each subject (114, 120, 122) is configured to write data to one or more of the plurality of buffers (124, 126, 128) in the shared memory space, wherein each observer (110, 112, 118) has an associated notification group (130, 132) comprising one or more buffer identifiers (134, 136, 138), each buffer identifier (134, 136, 138) corresponding to a respective buffer (124, 126, 128) in the shared memory space which is associated with one or more of the subjects; and wherein a scheduler of a first process of the plurality of processes is configured: (i) to monitor each buffer (124, 126, 128) in the shared memory space to determine one or more state changes associated with at least one subject of the plurality of processes (102, 104), the monitoring including determining a first state change relative to a first observer of the first process by comparing a current version of one of the buffers as specified in the shared memory space to a last known version of that buffer as specified in the notification group associated with the first observer and determining whether a match indicative of no change exists or a discrepancy indicative of a state change exists, and (ii) to provide an update notification based at least in part on the first state change to the associated notification group which is accessible by the first observer, wherein the update notification is received by the first observer, wherein the subject associated with the first state change upon which the update notification is based at least in part on is part of a second process of the plurality of processes, the second process being different to the first process. a plurality of processes (102, 104), each of the plurality of processes including one or more subjects (114, 120, 122), one or more observers (110, 112, 118) and a scheduler (108, 116); and a shared memory space comprising a plurality of buffers (124, 126, 128), the shared memory space being accessible by the plurality of processes (102, 104), wherein each subject (114, 120, 122) is configured to write data to one or more of the plurality of buffers (124, 126, 128) in the shared memory space, wherein each observer (110, 112, 118) has an associated notification group (130, 132) comprising one or more buffer identifiers (134, 136, 138), each buffer identifier (134, 136, 138) corresponding to a respective buffer (124, 126, 128) in the shared memory space which is associated with one or more of the subjects; and wherein a scheduler of a first process of the plurality of processes is configured: (i) to monitor each buffer (124, 126, 128) in the shared memory space to determine one or more state changes associated with at least one subject of the plurality of processes (102, 104), the monitoring including determining a first state change relative to a first observer of the first process by comparing a current version of one of the buffers as specified in the shared memory space to a last known version of that buffer as specified in the notification group associated with the first observer and determining whether a match indicative of no change exists or a discrepancy indicative of a state change exists, and (ii) to provide an update notification based at least in part on the first state change to the associated notification group which is accessible by the first observer, wherein the update notification is received by the first observer, wherein the subject associated with the first state change upon which the update notification is based at least in part on is part of a second process of the plurality of processes, the second process being different to the first process. (i) to monitor each buffer (124, 126, 128) in the shared memory space to determine one or more state changes associated with at least one subject of the plurality of processes (102, 104), the monitoring including determining a first state change relative to a first observer of the first process by comparing a current version of one of the buffers as specified in the shared memory space to a last known version of that buffer as specified in the notification group associated with the first observer and determining whether a match indicative of no change exists or a discrepancy indicative of a state change exists, and (ii) to provide an update notification based at least in part on the first state change to the associated notification group which is accessible by the first observer, wherein the update notification is received by the first observer, wherein the subject associated with the first state change upon which the update notification is based at least in part on is part of a second process of the plurality of processes, the second process being different to the first process.