node/deps/v8/test/mjsunit/shared-memory/condition-async-wait-timeout.js
Michaël Zasso 9d7cd9b864
deps: update V8 to 12.8.374.13
PR-URL: https://github.com/nodejs/node/pull/54077
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
2024-08-16 16:03:01 +02:00

31 lines
966 B
JavaScript

// Copyright 2024 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --harmony-struct --allow-natives-syntax
(function TestAsyncWaitTimeout() {
let mutex = new Atomics.Mutex;
let cv = new Atomics.Condition;
let notified = false;
Atomics.Mutex.lockAsync(mutex, async function() {
await Atomics.Condition.waitAsync(cv, mutex, 1);
notified = true;
});
assertEquals(false, notified);
// The wait will timeout after 1 ms, but setTimeout in tests doesn't wait
// for the timeout if the test is already done, so use an async loop to wait.
let asyncLoop = () => {
if (!notified) {
setTimeout(asyncLoop, 0);
return;
}
// The waiter timedout and was removed from this isolate's async waiters
// list.
assertEquals(0, %AtomicsSychronizationNumAsyncWaitersInIsolateForTesting());
};
asyncLoop();
})();