scheduling of threads/taskcontexts


My application uses Xenomai, with three periodic TaskContexts A, B and C
with priorities 50, 25 and 90 respectively, all using ORO_SCHED_RT.

TaskContext A contains a boost::thread_group which maintains and
executes a pool of threads, some of which are blocking.

Question: If Taskcontext B is executing (which has lower priority than
taskcontext A) and one of the blocked threads in taskcontext A becomes
ready to run (for example if it is read()ing the serial port and data
becomes available to read()) then will B be pre-empted immediately and
make way for the ready-to-run thread in taskcontext A?

On a more general level, is it okay to create multiple threads within a
taskcontext which collectively do that taskcontext's work?

Thanks in advance,