@shachaf@pkhuong and note that io_uring works through the futex2 API, so you can wait on multiple futexes with a single io_uring submission, if you so wish.
@shachaf@pkhuong yeah, that's the primary reason. one of the (many) paths for sync primitives in wine just proxies them to futexes, which works out surprisingly well despite not really being an accurate emulation always.