Fri Jul 31 20:10:59 EDT 2020
Bookkeeping seems heavy. I find I need:
- doubly linked list
- backpointer to scheduler
- status bit
That's 4 words. Not very lightweight.
Using indirect bookkeeping: 15 bits for task pointers, no backpointer
to scheduler (store it elsewhere), and 2 bits left for flags.
Is it worth the trouble?
EDIT: Worked on this a bit more. The main issues I end up with are
related to memory allocation for task and message queue structs, and
also it seems that blocking might be necessary, e.g. when a mailbox is
full, a task needs to block.
From these the conlusion is that actors might not be a great
abstraction for low level implementation, but they would work much
better if memory allocation wasn't such an ordeal.
Practically though, I do not really have many cases where the tasks
are going to be very dynamic. So let's not worry about that part.