HN user

_dky

2 karma
Posts0
Comments5
View on HN
No posts found.

If implementation is task based and task always runs on same virtual CPU (slots equaling CPUs or parallelism), wonder if something like below might help.

RW lock could be implemented using an array of length equal to slots and proper padding to ensure each slot is in its own face line (avoid invalidating CPU cache when different slot is read/written).

For read lock: Each task acquires the lock for their slot.

For write lock: Acquire lock from left most slot to right. Writes can starve readers when they block on in-flight reader at a different slot when moving from left to right.

I do not know how Rust RW locks are implemented.

If C++ had a contract on what exceptions a function can throw with compile time check to enforce caller catches those exceptions, would it make it better?

Guess Java does that, not much experience in Java here.