Skip to main content
Glama
mutex.ts849 B
/** * Thread-safe mutex implementation * Used for ensuring singleton instances are created safely */ export class Mutex { private _locking: Promise<void> = Promise.resolve(); private _locked = false; async acquire(): Promise<() => void> { // Wait for any previous lock to be released const waitForPreviousLock = this._locking.then(() => { this._locked = true; }); // Set up the next lock let resolver: () => void; this._locking = new Promise<void>((resolve) => { resolver = resolve; }); // Create release function const releaseFunction = (): void => { this._locked = false; resolver(); }; // Wait for previous lock and return the release function await waitForPreviousLock; return releaseFunction; } get locked(): boolean { return this._locked; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jakedismo/KuzuMem-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server