🔒 RWLContainer

Thread-Safe C++20 Containers

C++20 BSD 3-Clause Production Ready
🔐 Thread-Safe Synchronization
⚡ High Performance Reader-writer locking
🎯 Type-Safe C++20 templates
✅ Production-Ready Full test coverage
📦 Zero-Copy Move semantics
📄 JSON Support Serialization

Class API & Structure

RWLContainer

A thread-safe dictionary with reader-writer locking for efficient concurrent access.

  • Multiple concurrent readers
  • Exclusive writer access
  • Automatic memory management
  • JSON serialization support
Configuration:
  • ReplaceExisting - Replace on collision
  • FailOnCollission - Fail on collision
Methods: 📖 Full API Reference

WaitableQueue

A thread-safe queue for producer-consumer patterns with timeout support.

  • Efficient producer-consumer
  • Timeout-based waiting
  • Atomic counters
  • JSON serialization support
Characteristics:
  • FIFO ordering
  • Non-copyable, non-movable
  • Efficient waiting with semaphore
  • Timeout support
Methods: 📖 Full API Reference

Quick Start

Installation:

# Using NuGet (Windows)
nuget install SiddiqSoft.RWLContainer

# Using CPM (CMake)
CPMAddPackage("gh:SiddiqSoft/RWLContainer@1.5.3")

RWLContainer Example:

#include "siddiqsoft/RWLContainer.hpp"

int main() {
    siddiqsoft::RWLContainer<std::string, int> cache;
    
    cache.add("key1", 42);
    if (auto value = cache.find("key1")) {
        std::cout << "Value: " << *value << std::endl;
    }
    cache.remove("key1");
    
    return 0;
}

WaitableQueue Example:

#include "siddiqsoft/WaitableQueue.hpp"

int main() {
    siddiqsoft::WaitableQueue<std::string> queue;
    
    std::thread producer([&]() {
        queue.push("item1");
        queue.push("item2");
    });
    
    std::thread consumer([&]() {
        while (auto item = queue.tryWaitItem(std::chrono::milliseconds(500))) {
            std::cout << "Got: " << *item << std::endl;
        }
    });
    
    producer.join();
    consumer.join();
    
    return 0;
}

📖 More Examples: See Examples.md and Getting-Started.md for detailed usage patterns.