locks.request(name[, options], callback)
name<string>options<Object>mode<string> 要么是'exclusive',要么是'shared'。默认:'exclusive'。ifAvailable<boolean> 如果true,请求只有在锁尚未被持有的情况下才会被授予。如果无法授予,将会调用callback,使用null而不是Lock实例。默认值:false。steal<boolean> 如果true,任何同名的现有锁将被释放,并且该请求会立即被授予,优先于任何排队请求。默认值:false。signal<AbortSignal> 可用于中止待处理(但尚未授予)的锁请求。
callback<Function> 一旦锁被授予就会调用(如果ifAvailable是true且锁不可用,则使用null立即调用)。当函数返回时锁会自动释放,或者——如果函数返回的是一个 Promise——当该 Promise 解决时锁会释放。- 返回:<Promise> 在锁被释放后解决。
import { locks } from 'node:worker_threads';
await locks.request('my_resource', async (lock) => {
// The lock has been acquired.
});
// The lock has been released here.'use strict';
const { locks } = require('node:worker_threads');
locks.request('my_resource', async (lock) => {
// The lock has been acquired.
}).then(() => {
// The lock has been released here.
});