Reimplement event queue to ensure events are delivered in the order they are generated
Modify the event queue code so that it delivers events in the order they are generated. At present they are delivered mostly in that order, but because the event queue is chunked some events are delivered out of order. There may be some complications, because this doesn't neccesarily explain why VxWorks events seem better at being delivered in order than non RTOS events.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- New
- Series goal:
- Accepted for 3.15
- Implementation:
- Implemented
- Milestone target:
- 3.15.branch
- Started by
- Ralph Lange
- Completed by
- Ralph Lange
Whiteboard
An event queue with substantially better behavior (than my original dbEvent.c) is implemented on the cvs trunk (see lp:~epics-core/epics-base/cvs-trunk ). See also https:/
I was thinking about this last night on the way home and there is a design trade off. If you use a doubly linked list data structure then one can remove an event for a fast subscription from the middle of the list, but this requires more bytes per event entry and possibly more overhead for allocating and constructing an event entry. The portable server uses a doubly linked list and individually allocated objects for its event queue entries as I recall.
With the introduction of server-
As a side effect, updates are now sent in order.