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> 一旦锁被授予就会调用(如果 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.
});