diff --git a/docs/runtime/04_known_issues.md b/docs/runtime/04_known_issues.md index 2fa7b4437d7e3ce4074a471796d081418566c744..25f0a616e6c4ee507db8b6ecb75c2c14f12302b1 100644 --- a/docs/runtime/04_known_issues.md +++ b/docs/runtime/04_known_issues.md @@ -30,6 +30,8 @@ The current implementation of Reowolf has the following known issues: - The TCP listener component should probably do a `shutdown` before a `close` on the socket handle. It should also set the `SO_REUSEADDR` option. +- The TCP listener and TCP sender components have not been tested extensively in a multi-threaded setup. + - The way in which putting ports are ordered to block if the corresponding getter port's main inbox is full is rather silly. This led to the introduction of the "backup inbox" as it is found in the runtime's code. There is a design decision to make here, but the current implementation is a bit silly. There are two options: (a) have an atomic boolean indicating if the message slot for an inbox is full, or (b) do away with the "main inbox" alltogether, and have an unbounded message queue. - For practical use in components whose code supports an arbitrary number of peers (i.e. their code contains an array of ports that is used for communication and changes in size during the component's lifetime), the `select` statement somehow needs to support waiting on any one of those ports. @@ -42,4 +44,6 @@ The current implementation of Reowolf has the following known issues: - The `Ack` messages that are sent in response to `PeerPortChanged_Block` messages should contain the sending components `(component ID, port ID)` pair in case the `PeerPortChanged_Block` message is relayed. When such an `Ack` message is received, the peer of the port must be updated before transferring the port to the new owner. -- The compiler currently accepts a select arm's guard that is formulated as `auto a = get(get(rx))`. This should be disallowed. \ No newline at end of file +- The compiler currently accepts a select arm's guard that is formulated as `auto a = get(get(rx))`. This should be disallowed. + +- The work queue in the runtime is still a mutex-locked queue. The `QueueMpsc` type should be extended to be a multiple-producer multiple-consumer queue. This type should then replace the mutex-locked work queue. \ No newline at end of file