Sun Jan 12 00:02:32 CET 2020

Sending something from outside

Is not easy, because the value that is contained needs to be held in a
task's data structure until it is removed.

Getting something out of the system is simple: it's just a side
effect.  Getting something in needs:
- a task that halts after sending the data
- a call to the scheduler

Though we do not have a way to guarantee that the task will block.

To overcome this, use a buffer structure and a task that reads from
that buffer.  Whenever an element is added to the buffer, restart the
buffer reader task.

You really switch worlds this way.  Different rules apply on the
inside and the outside!