(PECL event >= 1.2.6-beta)
A classe EventBase representa a estrutura base de eventos do libevent. Ele contém um conjunto de eventos e pode pesquisar para determinar quais eventos estão ativos.
Cada base de eventos tem um
método,
ou um
backend
que usa para determinar quais eventos estão prontos. Os métodos reconhecidos
são:
select
,
poll
,
epoll
,
kqueue
,
devpoll
,
evport
e
win32
.
Para configurar a base de eventos a ser usada ou evitar backend específico, a classe EventConfig pode ser usada.
NÃO
destrua o
objeto
EventBase
enquanto os recursos dos objetos
Event
associados não forem liberados. Caso contrário, levará a resultados
imprevisíveis!
EventBase::LOOP_ONCE
Opção usada com o método EventBase::loop() que significa: "bloquear até que libevent tenha um evento ativo e então sair quando todos os eventos ativos tiverem seus retornos de chamada executados".
EventBase::LOOP_NONBLOCK
Opção usada com o método EventBase::loop() que significa: "não bloquear: veja quais eventos estão prontos agora, execute os retornos de chamada dos de maior prioridade e depois saia".
EventBase::NOLOCK
Opção de configuração. Não aloque um bloqueio para a base de eventos, mesmo que tenhamos um bloqueio configurado".
EventBase::STARTUP_IOCP
Opção de configuração somente do Windows. Ativa o despachante IOCP na inicialização.
EventBase::NO_CACHE_TIME
Opção de configuração. Em vez de verificar a hora atual sempre que o loop de eventos estiver pronto para executar retornos de chamada de tempo limite, verifique após cada retorno de chamada de tempo limite.
EventBase::EPOLL_USE_CHANGELIST
Se estivermos usando o
backend epoll
,
este sinalizador diz que é seguro usar o código interno da lista de
alterações do Libevent para agrupar adições e exclusões, a fim de tentar fazer o
menor número possível de syscalls.
Definir esta opção pode tornar o código executado mais rápido, mas pode desencadear um bug do Linux: não é seguro usar este sinalizador se houver algum fds clonado por dup() ou suas variantes. Fazer isso produzirá bugs estranhos e difíceis de diagnosticar.
Esta opção também pode ser ativada configurando a
variável de ambiente
EVENT_EPOLL_USE_CHANGELIST
.
Esta opção não tem efeito se alguém acabar usando um backend diferente de
epoll
.