···6363 }
6464 }
65656666+ /**
6767+ * Attempts to acquire a read lock without waiting.
6868+ * Makes a single atomic attempt; returns `null` on contention even from other readers.
6969+ * @returns A disposable {@link ReadGuard} if acquired, otherwise `null`.
7070+ */
7171+ tryReadLock(): ReadGuard | null {
7272+ const state = Atomics.load(this.view, 0);
7373+ if (state >= UNLOCKED && Atomics.compareExchange(this.view, 0, state, state + 1) === state) {
7474+ return new ReadGuard(this);
7575+ }
7676+ return null;
7777+ }
7878+6679 /** Releases a read lock. Wakes a waiting writer if this was the last reader. */
6780 readUnlock(): void {
6881 const prev = Atomics.sub(this.view, 0, 1);