Skip to main content
Glama
semaphore.ts453 B
export class Semaphore { private permits: number = 0; private waitingQueue: (() => void)[] = []; constructor(permits: number) { this.permits = permits; } async acquire(): Promise<void> { if (this.permits > 0) { this.permits--; return; } return new Promise((resolve) => { this.waitingQueue.push(resolve); }); } async release() { const next = this.waitingQueue.shift(); if (next) { this.permits++; next(); } } }

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/sunub/obsidian-mcp-server'

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