• Max Kellermann's avatar
    event/DeferredMonitor: make fully thread-safe · a357d84d
    Max Kellermann authored
    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().
    a357d84d
Name
Last commit
Last update
..
AudioCompress Loading commit data...
archive Loading commit data...
command Loading commit data...
cue Loading commit data...
db Loading commit data...
decoder Loading commit data...
encoder Loading commit data...
event Loading commit data...
filter Loading commit data...
fs Loading commit data...
input Loading commit data...
mixer Loading commit data...
output Loading commit data...
pcm Loading commit data...
playlist Loading commit data...
protocol Loading commit data...
system Loading commit data...
tag Loading commit data...
thread Loading commit data...
util Loading commit data...
win Loading commit data...
ArchiveDomain.cxx Loading commit data...
ArchiveDomain.hxx Loading commit data...
ArchiveFile.hxx Loading commit data...
ArchiveList.cxx Loading commit data...
ArchiveList.hxx Loading commit data...
ArchiveLookup.cxx Loading commit data...
ArchiveLookup.hxx Loading commit data...
ArchivePlugin.cxx Loading commit data...
ArchivePlugin.hxx Loading commit data...
ArchiveVisitor.hxx Loading commit data...
AudioConfig.cxx Loading commit data...
AudioConfig.hxx Loading commit data...
AudioFormat.cxx Loading commit data...
AudioFormat.hxx Loading commit data...
AudioParser.cxx Loading commit data...
AudioParser.hxx Loading commit data...
AvahiPoll.cxx Loading commit data...
AvahiPoll.hxx Loading commit data...
CheckAudioFormat.cxx Loading commit data...
CheckAudioFormat.hxx Loading commit data...
Client.cxx Loading commit data...
Client.hxx Loading commit data...
ClientEvent.cxx Loading commit data...
ClientExpire.cxx Loading commit data...
ClientFile.cxx Loading commit data...
ClientFile.hxx Loading commit data...
ClientGlobal.cxx Loading commit data...
ClientIdle.cxx Loading commit data...
ClientInternal.hxx Loading commit data...
ClientList.cxx Loading commit data...
ClientList.hxx Loading commit data...
ClientMessage.cxx Loading commit data...
ClientMessage.hxx Loading commit data...
ClientNew.cxx Loading commit data...
ClientProcess.cxx Loading commit data...
ClientRead.cxx Loading commit data...
ClientSubscribe.cxx Loading commit data...
ClientWrite.cxx Loading commit data...
CommandLine.cxx Loading commit data...
CommandLine.hxx Loading commit data...
Compiler.h Loading commit data...
ConfigData.cxx Loading commit data...
ConfigData.hxx Loading commit data...
ConfigDefaults.hxx Loading commit data...
ConfigError.cxx Loading commit data...
ConfigError.hxx Loading commit data...
ConfigFile.cxx Loading commit data...
ConfigFile.hxx Loading commit data...
ConfigGlobal.cxx Loading commit data...
ConfigGlobal.hxx Loading commit data...
ConfigOption.hxx Loading commit data...
ConfigParser.cxx Loading commit data...
ConfigParser.hxx Loading commit data...
ConfigPath.cxx Loading commit data...
ConfigPath.hxx Loading commit data...
ConfigTemplates.cxx Loading commit data...
ConfigTemplates.hxx Loading commit data...
CrossFade.cxx Loading commit data...
CrossFade.hxx Loading commit data...
Daemon.cxx Loading commit data...
Daemon.hxx Loading commit data...
DatabaseError.cxx Loading commit data...
DatabaseError.hxx Loading commit data...
DatabaseGlue.cxx Loading commit data...
DatabaseGlue.hxx Loading commit data...
DatabaseHelpers.cxx Loading commit data...
DatabaseHelpers.hxx Loading commit data...
DatabaseLock.cxx Loading commit data...
DatabaseLock.hxx Loading commit data...
DatabasePlaylist.cxx Loading commit data...
DatabasePlaylist.hxx Loading commit data...
DatabasePlugin.hxx Loading commit data...
DatabasePrint.cxx Loading commit data...
DatabasePrint.hxx Loading commit data...
DatabaseQueue.cxx Loading commit data...
DatabaseQueue.hxx Loading commit data...
DatabaseRegistry.cxx Loading commit data...
DatabaseRegistry.hxx Loading commit data...
DatabaseSave.cxx Loading commit data...
DatabaseSave.hxx Loading commit data...
DatabaseSelection.cxx Loading commit data...
DatabaseSelection.hxx Loading commit data...
DatabaseSimple.hxx Loading commit data...
DatabaseVisitor.hxx Loading commit data...
DecoderAPI.cxx Loading commit data...
DecoderAPI.hxx Loading commit data...
DecoderBuffer.cxx Loading commit data...
DecoderBuffer.hxx Loading commit data...
DecoderCommand.hxx Loading commit data...
DecoderControl.cxx Loading commit data...
DecoderControl.hxx Loading commit data...
DecoderError.cxx Loading commit data...
DecoderError.hxx Loading commit data...
DecoderInternal.cxx Loading commit data...
DecoderInternal.hxx Loading commit data...
DecoderList.cxx Loading commit data...
DecoderList.hxx Loading commit data...
DecoderPlugin.cxx Loading commit data...
DecoderPlugin.hxx Loading commit data...
DecoderPrint.cxx Loading commit data...
DecoderPrint.hxx Loading commit data...
DecoderThread.cxx Loading commit data...
DecoderThread.hxx Loading commit data...
DespotifyUtils.cxx Loading commit data...
DespotifyUtils.hxx Loading commit data...
Directory.cxx Loading commit data...
Directory.hxx Loading commit data...
DirectorySave.cxx Loading commit data...
DirectorySave.hxx Loading commit data...
EncoderAPI.hxx Loading commit data...
EncoderList.cxx Loading commit data...
EncoderList.hxx Loading commit data...
EncoderPlugin.hxx Loading commit data...
ExcludeList.cxx Loading commit data...
ExcludeList.hxx Loading commit data...
FilterConfig.cxx Loading commit data...
FilterConfig.hxx Loading commit data...
FilterInternal.hxx Loading commit data...
FilterPlugin.cxx Loading commit data...
FilterPlugin.hxx Loading commit data...
FilterRegistry.cxx Loading commit data...
FilterRegistry.hxx Loading commit data...
GlobalEvents.cxx Loading commit data...
GlobalEvents.hxx Loading commit data...
IOThread.cxx Loading commit data...
IOThread.hxx Loading commit data...
IcyMetaDataParser.cxx Loading commit data...
IcyMetaDataParser.hxx Loading commit data...
IcyMetaDataServer.cxx Loading commit data...
IcyMetaDataServer.hxx Loading commit data...
IdTable.hxx Loading commit data...
Idle.cxx Loading commit data...
Idle.hxx Loading commit data...
InotifyDomain.cxx Loading commit data...
InotifyDomain.hxx Loading commit data...
InotifyQueue.cxx Loading commit data...
InotifyQueue.hxx Loading commit data...
InotifySource.cxx Loading commit data...
InotifySource.hxx Loading commit data...
InotifyUpdate.cxx Loading commit data...
InotifyUpdate.hxx Loading commit data...
InputInit.cxx Loading commit data...
InputInit.hxx Loading commit data...
InputPlugin.hxx Loading commit data...
InputRegistry.cxx Loading commit data...
InputRegistry.hxx Loading commit data...
InputStream.cxx Loading commit data...
InputStream.hxx Loading commit data...
Instance.cxx Loading commit data...
Instance.hxx Loading commit data...
Listen.cxx Loading commit data...
Listen.hxx Loading commit data...
Log.cxx Loading commit data...
Log.hxx Loading commit data...
LogBackend.cxx Loading commit data...
LogBackend.hxx Loading commit data...
LogInit.cxx Loading commit data...
LogInit.hxx Loading commit data...
LogLevel.hxx Loading commit data...
LogV.hxx Loading commit data...
Main.cxx Loading commit data...
Main.hxx Loading commit data...
Mapper.cxx Loading commit data...
Mapper.hxx Loading commit data...
MemorySongEnumerator.cxx Loading commit data...
MemorySongEnumerator.hxx Loading commit data...
MixRampInfo.hxx Loading commit data...
MixerAll.cxx Loading commit data...
MixerAll.hxx Loading commit data...
MixerControl.cxx Loading commit data...
MixerControl.hxx Loading commit data...
MixerInternal.hxx Loading commit data...
MixerList.hxx Loading commit data...
MixerPlugin.hxx Loading commit data...
MixerType.cxx Loading commit data...
MixerType.hxx Loading commit data...
MusicBuffer.cxx Loading commit data...
MusicBuffer.hxx Loading commit data...
MusicChunk.cxx Loading commit data...
MusicChunk.hxx Loading commit data...
MusicPipe.cxx Loading commit data...
MusicPipe.hxx Loading commit data...
OutputAPI.hxx Loading commit data...
OutputAll.cxx Loading commit data...
OutputAll.hxx Loading commit data...
OutputCommand.cxx Loading commit data...
OutputCommand.hxx Loading commit data...
OutputControl.cxx Loading commit data...
OutputControl.hxx Loading commit data...
OutputError.cxx Loading commit data...
OutputError.hxx Loading commit data...
OutputFinish.cxx Loading commit data...
OutputInit.cxx Loading commit data...
OutputInternal.hxx Loading commit data...
OutputList.cxx Loading commit data...
OutputList.hxx Loading commit data...
OutputPlugin.cxx Loading commit data...
OutputPlugin.hxx Loading commit data...
OutputPrint.cxx Loading commit data...
OutputPrint.hxx Loading commit data...
OutputState.cxx Loading commit data...
OutputState.hxx Loading commit data...
OutputThread.cxx Loading commit data...
OutputThread.hxx Loading commit data...
Page.cxx Loading commit data...
Page.hxx Loading commit data...
Partition.cxx Loading commit data...
Partition.hxx Loading commit data...
Permission.cxx Loading commit data...
Permission.hxx Loading commit data...
PlayerControl.cxx Loading commit data...
PlayerControl.hxx Loading commit data...
PlayerThread.cxx Loading commit data...
PlayerThread.hxx Loading commit data...
Playlist.cxx Loading commit data...
Playlist.hxx Loading commit data...
PlaylistAny.cxx Loading commit data...
PlaylistAny.hxx Loading commit data...
PlaylistControl.cxx Loading commit data...
PlaylistDatabase.cxx Loading commit data...
PlaylistDatabase.hxx Loading commit data...
PlaylistEdit.cxx Loading commit data...
PlaylistError.cxx Loading commit data...
PlaylistError.hxx Loading commit data...
PlaylistFile.cxx Loading commit data...
PlaylistFile.hxx Loading commit data...
PlaylistGlobal.cxx Loading commit data...
PlaylistGlobal.hxx Loading commit data...
PlaylistInfo.hxx Loading commit data...
PlaylistMapper.cxx Loading commit data...
PlaylistMapper.hxx Loading commit data...
PlaylistPlugin.hxx Loading commit data...
PlaylistPrint.cxx Loading commit data...
PlaylistPrint.hxx Loading commit data...
PlaylistQueue.cxx Loading commit data...
PlaylistQueue.hxx Loading commit data...
PlaylistRegistry.cxx Loading commit data...
PlaylistRegistry.hxx Loading commit data...
PlaylistSave.cxx Loading commit data...
PlaylistSave.hxx Loading commit data...
PlaylistSong.cxx Loading commit data...
PlaylistSong.hxx Loading commit data...
PlaylistState.cxx Loading commit data...
PlaylistState.hxx Loading commit data...
PlaylistTag.cxx Loading commit data...
PlaylistUpdate.cxx Loading commit data...
PlaylistVector.cxx Loading commit data...
PlaylistVector.hxx Loading commit data...
Queue.cxx Loading commit data...
Queue.hxx Loading commit data...
QueuePrint.cxx Loading commit data...
QueuePrint.hxx Loading commit data...
QueueSave.cxx Loading commit data...
QueueSave.hxx Loading commit data...
ReplayGainConfig.cxx Loading commit data...
ReplayGainConfig.hxx Loading commit data...
ReplayGainInfo.cxx Loading commit data...
ReplayGainInfo.hxx Loading commit data...
SignalHandlers.cxx Loading commit data...
SignalHandlers.hxx Loading commit data...
Song.cxx Loading commit data...
Song.hxx Loading commit data...
SongEnumerator.hxx Loading commit data...
SongFilter.cxx Loading commit data...
SongFilter.hxx Loading commit data...
SongPointer.hxx Loading commit data...
SongPrint.cxx Loading commit data...
SongPrint.hxx Loading commit data...
SongSave.cxx Loading commit data...
SongSave.hxx Loading commit data...
SongSort.cxx Loading commit data...
SongSort.hxx Loading commit data...
SongSticker.cxx Loading commit data...
SongSticker.hxx Loading commit data...
SongUpdate.cxx Loading commit data...
StateFile.cxx Loading commit data...
StateFile.hxx Loading commit data...
Stats.cxx Loading commit data...
Stats.hxx Loading commit data...
StickerDatabase.cxx Loading commit data...
StickerDatabase.hxx Loading commit data...
StickerPrint.cxx Loading commit data...
StickerPrint.hxx Loading commit data...
TagFile.cxx Loading commit data...
TagFile.hxx Loading commit data...
TagPrint.cxx Loading commit data...
TagPrint.hxx Loading commit data...
TagSave.cxx Loading commit data...
TagSave.hxx Loading commit data...
TagStream.cxx Loading commit data...
TagStream.hxx Loading commit data...
TextInputStream.cxx Loading commit data...
TextInputStream.hxx Loading commit data...
TimePrint.cxx Loading commit data...
TimePrint.hxx Loading commit data...
Timer.cxx Loading commit data...
Timer.hxx Loading commit data...
UpdateArchive.cxx Loading commit data...
UpdateArchive.hxx Loading commit data...
UpdateContainer.cxx Loading commit data...
UpdateContainer.hxx Loading commit data...
UpdateDatabase.cxx Loading commit data...
UpdateDatabase.hxx Loading commit data...
UpdateDomain.cxx Loading commit data...
UpdateDomain.hxx Loading commit data...
UpdateGlue.cxx Loading commit data...
UpdateGlue.hxx Loading commit data...
UpdateIO.cxx Loading commit data...
UpdateIO.hxx Loading commit data...
UpdateInternal.hxx Loading commit data...
UpdateQueue.cxx Loading commit data...
UpdateQueue.hxx Loading commit data...
UpdateRemove.cxx Loading commit data...
UpdateRemove.hxx Loading commit data...
UpdateSong.cxx Loading commit data...
UpdateSong.hxx Loading commit data...
UpdateWalk.cxx Loading commit data...
UpdateWalk.hxx Loading commit data...
Volume.cxx Loading commit data...
Volume.hxx Loading commit data...
Win32Main.cxx Loading commit data...
ZeroconfAvahi.cxx Loading commit data...
ZeroconfAvahi.hxx Loading commit data...
ZeroconfBonjour.cxx Loading commit data...
ZeroconfBonjour.hxx Loading commit data...
ZeroconfGlue.cxx Loading commit data...
ZeroconfGlue.hxx Loading commit data...
ZeroconfInternal.hxx Loading commit data...
check.h Loading commit data...
gerror.h Loading commit data...
ls.cxx Loading commit data...
ls.hxx Loading commit data...
notify.cxx Loading commit data...
notify.hxx Loading commit data...
open.h Loading commit data...
poison.h Loading commit data...