I wrote a quick blog post about a pattern I discovered while building TUI applications in Rust. It’s a bit unrefined, and I’m working on package to help make the pattern easier. Let me know what you think!
I’m of the belief that spawning threads on demand is an anti-pattern; threads should spawn on program startup, and sleep until they have work to do.
Hmm, I need to think on this to decide whether I agree. What’s your reasoning for this opinion? Is it just based on lower latency, or is it more of an architectural/correctness thing?
Oh hi, I forgot to reply to this!
My reasoning was mostly “I read it somewhere when I started coding and then didn’t do much with threads” to be honest. Not great reasoning there. But modeling the interactions between a user, UI thread, and work thread made it a lot easier to organize my code and create a good separation of concerns; the UI thread handles interface updates and dispatching events, and the worker thread works. Honestly that code organization was the biggest advantage I got out of doing things this way, and I wish I’d emphasized that more in the blog post.