sclass ReliableSingleThread_Multi {
IVF1 processObject;
int delay; // delay before changes are processed
*() {}
*(IVF1 *processObject) {}
*(int *delay, IVF1 *processObject) {}
// internal
Set changedObjects = synchroSet();
ReliableSingleThread rst = new(r process);
// notify of change in object
void add(A a) {
if (changedObjects.add(a))
rst.trigger();
}
private void process {
sleep(delay);
for (A object : cloneAndClearList(changedObjects))
pcallF(processObject, object);
}
}