RE: Pth Scheduling Policy

2004-10-13 Thread David Schwartz


 I have some doubts regarding the way in which the Pth scheduler
 implements Priority based non-preemptive Scheduling.

When a low-priority thread make a higher-priority thread ready-to-run, it
is offering the CPU to that higher-priority thread.

 My program is using the pth cond and mutex
 variables for synchronization between the threads.
 From a low priority thread, I am calling
 pth_cond_notify() and immediately a higher priority
 thread (which was there in the ready queue) was getting scheduled.

Well, that's the purpose of 'pth_cond_notify'. It is, after all, a
synchronization function.

 I analyzed the pth_cond_notify () and saw a pth_yield() inside that
function.
 This pth_yield() is preempting the lower priority thread that called the
pth_cond_notify().

It's not preempting it, the lower priority thread explicity made the higher
priority thread ready-to-run by calling a synchronization function.

 But my application was expecting a pure non-preemptive response.

You weren't pre-empted, you made a higher-priority thread run.

 Can I achieve the non-preemptive response if I remove the
 pth_yield() in pth_cond_notify() ?
 Will there be any performance issue with the Pth library,
 if I remove the pth_yield () in pth_cond_notify() ?

It's hard for me to imagine why you would want to do this. What's the point
of having thread priorities if you want to keep the higher-priority threads
from running? But, yes, it should be safe and should do what you want. But I
think it's quite likely that you're doing something fundamentally odd,
possibly poorly thought out, that makes you want this.

DS


__
GNU Portable Threads (Pth)http://www.gnu.org/software/pth/
Development Site  http://www.ossp.org/pkg/lib/pth/
Distribution Files  ftp://ftp.gnu.org/gnu/pth/
Distribution Snapshots ftp://ftp.ossp.org/pkg/lib/pth/
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager (Majordomo)   [EMAIL PROTECTED]


RE: Pth Scheduling Policy

2004-10-13 Thread Vinu V



 My program is using the pth cond and mutex
 variables for synchronization between the threads.
 From a low priority thread, I am calling
 pth_cond_notify() and immediately a higher priority
 thread (which was there in the ready queue) was getting scheduled.

Well, that's the purpose of 'pth_cond_notify'. It is, after all, a
synchronization function.

I think in a non preemptive system, the library cannot force the
application to 
yield the CPU unless the application by itself does an yield.

Using pth_cond_notify, a thread just wants to notify another thread
that,
an event has occurred and it doesn't mean that it should also relinquish the
CPU.
Its upto that thread whether to continue with the processing or not.

Is there any other call in Pth which can be used for sending a
notification
to a thread, without relinquishing the CPU ?


Regards,
Vinu 



-
Disclaimer
-

This message(including attachment if any)is confidential and may be privileged.Before 
opening attachments please check them
for viruses and defects.MindTree Consulting Private Limited (MindTree)will not be 
responsible for any viruses or defects or
any forwarded attachments emanating either from within MindTree or outside.If you have 
received this message by mistake please notify the sender by return  e-mail and delete 
this message from your system. Any unauthorized use or dissemination of this message 
in whole or in part is strictly prohibited.  Please note that e-mails are susceptible 
to change and MindTree shall not be liable for any improper, untimely or incomplete 
transmission.

-

RE: Pth Scheduling Policy

2004-10-13 Thread David Schwartz

  My program is using the pth cond and mutex
  variables for synchronization between the threads.
  From a low priority thread, I am calling
  pth_cond_notify() and immediately a higher priority
  thread (which was there in the ready queue) was getting scheduled.

   Well, that's the purpose of 'pth_cond_notify'. It is, after all, a
   synchronization function.

   I think in a non preemptive system, the library cannot force the
 application to
 yield the CPU unless the application by itself does an yield.

I think a non-preemptive system should be as much like a pre-emptive system
as possible.

   Is there any other call in Pth which can be used for sending a
 notification
 to a thread, without relinquishing the CPU ?

Yes, just set your priority to the highest priority until you're ready to
let another thread run.

DS


__
GNU Portable Threads (Pth)http://www.gnu.org/software/pth/
Development Site  http://www.ossp.org/pkg/lib/pth/
Distribution Files  ftp://ftp.gnu.org/gnu/pth/
Distribution Snapshots ftp://ftp.ossp.org/pkg/lib/pth/
User Support Mailing List[EMAIL PROTECTED]
Automated List Manager (Majordomo)   [EMAIL PROTECTED]