top | item 39552204

(no title)

scaredginger | 2 years ago

Obtaining an uncontested lock absolutely doesn't require calling into the kernel

discuss

order

jcelerier|2 years ago

How can you give hard guarantees that on Windows, Mac, Linux with the OS and/or libc provided locks?

gpderetta|2 years ago

If you really really really need such a guarantee, you implement your own.

Otherwise you inspect the implementation, but in 2024 a fast-pathed OS lock is table stakes.

tialaramex|2 years ago

Rust (which is what we're discussing here) actually doesn't promise this in general. But for the three operating systems you mentioned that is in fact what it delivers because as another commenter mentioned it's table stakes. If your OS can't do this it's a toy OS.

The Windows and Linux solutions are by Mara Bos (the MacOS one might be too, I don't know)

The Windows one is very elegant but opaque. Basically Microsoft provides an appropriate API ("Slim Reader/Writer Locks") and Mara's code just uses that API.

The Linux one shows exactly how to use a Futex: if you know what a futex is, yeah, Rust just uses a futex. If you don't, go read about the Futex, it's clever.

saagarjha|2 years ago

Because not doing that these days would be malpractice for an OS of that caliber.