In PostgreSQL, REPEATABLE READ works this way. Reads never block and never see later commits, but write skew is still possible.