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> 一旦锁被授予就会被调用(如果 ifAvailabletrue 且锁不可用,则会立即以 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.
});