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 : syncCloneAndClearList(changedObjects))
pcallF(processObject, object);
}
void setEnter(IF0 enter) {
rst.enter = enter;
}
}