Skip to main content
Glama
apolosan

Design Patterns MCP Server

by apolosan
double-checked-locking.json1.99 kB
{ "id": "double-checked-locking", "name": "Double-Checked Locking", "category": "Concurrency", "description": "Reduces locking overhead when implementing lazy initialization", "when_to_use": "Lazy initialization\nPerformance optimization\nSingleton pattern", "benefits": "Performance optimization\nLazy initialization\nReduced locking", "drawbacks": "Complex implementation\nMemory model issues\nError-prone", "use_cases": "Singleton pattern\nLazy loading\nResource initialization", "complexity": "High", "tags": [ "concurrency", "initialization", "optimization" ], "examples": { "typescript": { "language": "typescript", "code": "// Double-Checked Locking: reduce locking overhead\nclass Singleton {\n private static instance: Singleton | null = null;\n private static lock = false;\n private static lockQueue: Array<() => void> = [];\n \n private constructor() {\n // Expensive initialization\n }\n \n static async getInstance(): Promise<Singleton> {\n // First check (no lock)\n if (this.instance !== null) {\n return this.instance;\n }\n \n // Acquire lock\n await this.acquireLock();\n \n try {\n // Second check (with lock)\n if (this.instance === null) {\n this.instance = new Singleton();\n }\n return this.instance;\n } finally {\n this.releaseLock();\n }\n }\n \n private static async acquireLock(): Promise<void> {\n while (this.lock) {\n await new Promise<void>(resolve => this.lockQueue.push(resolve));\n }\n this.lock = true;\n }\n \n private static releaseLock(): void {\n this.lock = false;\n const next = this.lockQueue.shift();\n if (next) next();\n }\n}\n\n// Usage: Multiple concurrent calls, only one initialization\nconst [s1, s2, s3] = await Promise.all([\n Singleton.getInstance(),\n Singleton.getInstance(),\n Singleton.getInstance()\n]);\n\nconsole.log(s1 === s2 && s2 === s3); // true" } } }

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/apolosan/design_patterns_mcp'

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