< Previous by Date Date Index Next by Date >
  Thread Index  

[reSIProcate] Threading and polling loops


Title: Message
Hi all
 
I have been working with the stack for a short time and I am trying to determine the most efficient way to use the stack in a multithreaded environment.  I understand I can attach Transports that run as independent threads.  The interface between the stack and transports for passing events is the Fifo.  This looks clean except for one concern:  both the Transport and the stack require polling loops.  The Transport does it explicitly in thread() with a 100 millisec poll time.  The stack is polled at whatever rate the application decides, but using the same FdSet::selectMilliSeconds() call.
 
I would prefer to use a completely event driven system. Is there any way in the existing codebase to have a pair of transport threads?  One that reads using select to get IO ready events and a second that transmits and blocks on the FIFO?  In a similar train of thought, I would like to be able to run the stack in a thread that blocks on the state machine FIFO (which would presumably get filled from not only the read-mode transport thread, but also from other application threads.
 
Any thoughts?  I am not suggesting redesign here, just wondering if I have missed some ways to do what I am attempting.
 
 
Dennis Dupont
Senior Systems Architect
Intelemedia Communications, Inc.