#include <stdlib.h> // for exit, EXIT_FAILURE, EXIT_SUC... #include <atomic> // for atomic_uint, __atomic_base #include "CountingPrivateSemaphore.hpp" // for CountingPrivateSemaphore #include "Runtime.hpp" // for Runtime #include "emper-common.h" // for UNUSED_ARG #include "emper.hpp" // for async, spawn static std::atomic_uint counter; static void increaseCounterByOne() { counter++; } static void mainFiber(void) { const unsigned int FIBER_COUNT = 100; CountingPrivateSemaphore cps; for (unsigned int i = 0; i < FIBER_COUNT; ++i) { spawn(&increaseCounterByOne, cps); } cps.wait(); if (counter != FIBER_COUNT) { exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); } int main(UNUSED_ARG int arg, UNUSED_ARG char *argv[]) { Runtime runtime; async(&mainFiber); runtime.waitUntilFinished(); return EXIT_FAILURE; }