Re:Yazi: Fast terminal file manager based on async I/O
by samus on Saturday September 16, 2023 @01:00PM
(#37536517)
Almost every UI framework out there is single-threaded and has facilities to help offloading such tasks into the background. Usually, to a worker thread pool. It's a bit fiddly, especially in a non-managed language that doesn't protect from dumb mistakes, but it can be easily done.
io_uring is for use cases where the context switch overhead of system calls starts to matter. While async I/O can be justified for U/I programming, it's safe to say that a file manager won't ever benefit from io_uring.
Re:Yazi: Fast terminal file manager based on async I/O
by sxyazi on Saturday September 16, 2023 @02:52PM
(#37537519)
There is a Reddit post discussing this point: https://www.reddit.com/r/rust/comments/16fxr58/comment/k04u7...
> There are many scenarios that require CPU, such as image downscaling, image encoding, code highlighting, sorting large directories, etc.
If you want to delve further into Yazi's inner workings, you can see https://github.com/sxyazi/yazi/issues/143
Re:Yazi: Fast terminal file manager based on async I/O
by remram on Sunday September 17, 2023 @05:45AM
(#37543226)
What advantage does thread pool + io_uring have over just thread pool?
Unless you have millions of CPU cores and therefore many downscaling/encoding/highlighting tasks starting/finishing every second, I still don't see what io_uring brings to the table.
Running tasks in the background does NOT require io_uring.
It says "CPU tasks are spread across multiple threads", but what CPU tasks does a file manager perform?