Event-Driven Programming in C++ 1.0
A case study on event-driven programming in C++
Loading...
Searching...
No Matches
event_queue::EventQueue Class Reference

A thread-safe event queue. More...

#include <event_queue.hpp>

Public Types

using Event = std::function< void()>
 Type alias for an event.
 

Public Member Functions

void pushEvent (const Event &event)
 Enqueues an event.
 
void processEvents ()
 Processes all events in the queue.
 
bool isEmpty () const
 Checks whether the event queue is empty.
 

Private Attributes

std::queue< Eventevents_
 The underlying queue storing events.
 
std::mutex mutex_
 Mutex to protect access to the event queue.
 

Detailed Description

A thread-safe event queue.

The EventQueue class allows you to enqueue events (callable objects) and later process them sequentially (in a FIFO manner). It uses a mutex to ensure that operations on the queue are safe across multiple threads.

Member Typedef Documentation

◆ Event

using event_queue::EventQueue::Event = std::function<void()>

Type alias for an event.

An event is defined as a callable object that takes no arguments and returns void.

Member Function Documentation

◆ isEmpty()

bool event_queue::EventQueue::isEmpty ( ) const

Checks whether the event queue is empty.

Returns
true if the event queue contains no events, false otherwise.

◆ processEvents()

void event_queue::EventQueue::processEvents ( )

Processes all events in the queue.

Executes all events in the queue in FIFO order. After processing, the queue is empty. This operation is thread-safe.

◆ pushEvent()

void event_queue::EventQueue::pushEvent ( const Event event)

Enqueues an event.

Adds an event to the queue. The event will be executed when processEvents() is called.

Parameters
eventThe event to enqueue.

Member Data Documentation

◆ events_

std::queue<Event> event_queue::EventQueue::events_
private

The underlying queue storing events.

◆ mutex_

std::mutex event_queue::EventQueue::mutex_
mutableprivate

Mutex to protect access to the event queue.


The documentation for this class was generated from the following files: