[asterisk-dev] Scheduler and event callbacks - what thread?

Ian Pilcher arequipeno at gmail.com
Tue Nov 1 17:48:12 CDT 2011

I'm back with another thread-related question.

chan_sip uses at least two types of callbacks -- an event callback
registered with ast_event_subscribe() and a scheduler callback
registered with ast_sched_add().  The two callback functions are using
a shared static variable to communicate state.


  static int event_sched_id = -1;

  static void event_callback(...)
      if (event_sched_id == -1) {
          event_sched_id = ast_sched_add(..., sched_callback, ...);

  static int sched_callback(...)
      event_sched_id == -1;

Is there anything ensures that these two callbacks will always be called
from the same thread?  If not, then the shared variable needs a mutex.

Even if they are always executed in the same thread, am I correct in
thinking that there's a possibility of the thread being interrupted by
an event or scheduled action -- in which case the shared variable needs
to be volatile and atomic?


Ian Pilcher                                         arequipeno at gmail.com
"If you're going to shift my paradigm ... at least buy me dinner first."

More information about the asterisk-dev mailing list