Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Websocket CPU efficiency improvements. (#711)
I see high cpu usage using the `fsdocs watch` command in current release version. It appears that the loop inside the socket is running constantly since it never yields to receive socket messages from the client, causing the process to use 100% of available CPU. Also, since the reload creates a new socket connection (and suave creates a new handler) this compounds since a new infinite loop is created after every reload. I've replaced the mutable boolean with a ManualResetEvent which all connected sockets block on until a reload is called for. Once the socket connection is closed the handler exits. I chose ManualResetEvent over AutoResetEvent because we want all connected sockets to restart at the same time, rather than individually, since someone might have multiple tabs open.
- Loading branch information