# An ``event`` is a simple synchronization object. It contains up to 64 signals
# that threads can wait for and signal in parallel.

object event : object {
    uid f441e03da5516b1a

    capabilities [
        signal
        wait
    ]

    method create [constructor]

    # Signal events on this object
    method signal [cap:signal] {
        param signals uint64        # A bitset of which events to signal
    }

    # Wait for signaled events on this object
    method wait [cap:wait] {
        param signals uint64 [out]  # A bitset of which events were signaled
        param timeout uint64        # Wait timeout in nanoseconds
    }
}

