#include <iostream>
#include <vector>
#include <thread>
#include <atomic>

#include "debug/log.hpp"

static constexpr int N = 1000;

using q_t = lockfree::MpscQueue<std::string>;

void produce()
{
    std::hash<std::thread::id> hasher;

    for(int i = 0; i < N; ++i)
    {
        auto str = "Hello number " + std::to_string(i) + " from thread " +
            std::to_string(hasher(std::this_thread::get_id()));

        LOG_DEBUG(str);
    }
}

int main(void)
{
    constexpr int THREADS = 256;
    
    std::vector<std::thread> threads;

    for(int i = 0; i < THREADS; ++i)
        threads.push_back(std::thread([]() { produce(); }));

    for(auto& thread : threads)
        thread.join();

    return 0;
}