EventGenerator reads meta data (attributes) from a base generator (which in turn can inherit from Controllable). Next, it calls get_events(), potentially several times, to obtain all events for a pulse. If meta data changes between (or within) these calls results may be off (mainly for large parameter changes).
Thus we need to lock the base generator from changes while generating data for a pulse. One option would be to put add lock() and unlock() methods to Controllable. The lock would be checked by Controllable before calling setattr.
EventGenerator
reads meta data (attributes) from a base generator (which in turn can inherit fromControllable
). Next, it callsget_events()
, potentially several times, to obtain all events for a pulse. If meta data changes between (or within) these calls results may be off (mainly for large parameter changes).Thus we need to lock the base generator from changes while generating data for a pulse. One option would be to put add
lock()
andunlock()
methods toControllable
. The lock would be checked byControllable
before callingsetattr
.