locks.request(name[, options], callback)
name<string>options<Object>mode<string> 可以是'exclusive'或'shared'。默认值:'exclusive'。ifAvailable<boolean> 如果为true,请求仅在锁未被持有时才会被授予。如果无法授予,将使用null而不是Lock实例调用callback。默认值: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.
});