glibmm  2.64.2
Public Member Functions | List of all members
Glib::Dispatcher Class Reference

Signal class for inter-thread communication. More...

#include <glibmm/dispatcher.h>

Public Member Functions

 Dispatcher ()
 Create new Dispatcher instance using the default main context. More...
 
 Dispatcher (const Dispatcher&)=delete
 
Dispatcheroperator= (const Dispatcher&)=delete
 
 Dispatcher (const Glib::RefPtr< MainContext >& context)
 Create new Dispatcher instance using an arbitrary main context. More...
 
 ~Dispatcher () noexcept
 
void emit ()
 
void operator() ()
 
sigc::connection connect (const sigc::slot< void >& slot)
 
sigc::connection connect (sigc::slot< void >&& slot)
 

Detailed Description

Signal class for inter-thread communication.

Glib::Dispatcher works similar to sigc::signal<void>. But unlike normal signals, the notification happens asynchronously through a pipe. This is a simple and efficient way of communicating between threads, and especially useful in a thread model with a single GUI thread.

No mutex locking is involved, apart from the operating system's internal I/O locking. That implies some usage rules:

Notes about performance:

Using Glib::Dispatcher on Windows:

Glib::Dispatcher also works on win32-based systems. Unfortunately though, the implementation cannot use a pipe on win32 and therefore does have to lock a mutex on emission, too. However, the impact on performance is likely minor and the notification still happens asynchronously. Apart from the additional lock the behavior matches the Unix implementation.

Examples:
thread/dispatcher.cc.

Constructor & Destructor Documentation

Glib::Dispatcher::Dispatcher ( )

Create new Dispatcher instance using the default main context.

Exceptions
Glib::FileError
Glib::Dispatcher::Dispatcher ( const Dispatcher )
delete
Glib::Dispatcher::Dispatcher ( const Glib::RefPtr< MainContext >&  context)
explicit

Create new Dispatcher instance using an arbitrary main context.

Exceptions
Glib::FileError
Glib::Dispatcher::~Dispatcher ( )
noexcept

Member Function Documentation

sigc::connection Glib::Dispatcher::connect ( const sigc::slot< void > &  slot)
sigc::connection Glib::Dispatcher::connect ( sigc::slot< void > &&  slot)
void Glib::Dispatcher::emit ( )
void Glib::Dispatcher::operator() ( )
Dispatcher& Glib::Dispatcher::operator= ( const Dispatcher )
delete