aboutsummaryrefslogtreecommitdiffstats
path: root/src/event/DeferredMonitor.hxx (follow)
Commit message (Collapse)AuthorAgeFilesLines
* event/DeferredMonitor: make fully thread-safeMax Kellermann2014-01-041-36/+7
| | | | | | | | | | | | | Instead of creating a new eventfd for each DeferredMonitor instance, reuse EventLoop's eventfd, and add a std::list to EventLoop that manages the list of pending DeferredMonitors. This std::list is protected by the same mutex as the "calls" list. The bottom line is: reduced overhead because the per-instance eventfd was eliminated, slightly added overhead due to Mutex usage (but negligible), and we're thread-safe now. This subsystem is now good enough to replace EventLoop::AddCall().
* event/*Monitor: document as not being thread-safeMax Kellermann2013-12-311-0/+3
|
* Add infrastructure for using multiple event loopsDenis Krjuchkov2013-11-271-14/+25
| | | | | | | | | | | | This change adds two configuration options: --with-eventloop=[glib|internal|auto] --with-pollmethod=[epoll|auto] First allows switching between GLib event loop and internal one. Second chooses backend to use for internal event loop. Conditional compilation symbols are changed accordingly. Additional helper macro MPD_OPTIONAL_FUNC_NODEF is added as well.
* gcc.h: rename to Compiler.hMax Kellermann2013-10-151-1/+1
|
* EventLoop: new implementation using epollMax Kellermann2013-08-101-1/+37
| | | | Implement an event loop without GLib.
* event/*Monitor: add method GetEventLoop()Max Kellermann2013-08-081-0/+4
|
* event/DeferredMonitor: rename Run() to RunDeferred()Max Kellermann2013-08-071-2/+2
|
* event/DeferredMonitor: use EventLoop::AddIdle()Max Kellermann2013-08-071-2/+6
|
* event/DeferredMonitor: new class wrapping g_idle_add()Max Kellermann2013-08-071-0/+54