#include <why-thread.h>
#include <why-messagequeue.h>
#include <why-time.h>
#include <print>

int main()
{
    Why::init();

    auto queue = Why::MessageQueue<int>::create();

    auto producer = Why::Thread::create(
        [&queue](){
            for (int i=0;;i++) {
                Why::msleep(500);
                queue->put(i);
            }
        }
    );
    if (! producer) {
        std::println(stderr, "thread creation failed: {}", producer.error().msg());
        return 1;
    }

    // main thread consumes at highest priority
    while (true) {
        auto elem = queue->get();
        std::println("received {}", *elem);
    }
    return 0;
}
