RE: [sv-ec] Eratta: Semaphore put method should be a function, not a task

From: Steven Sharp <sharp_at_.....>
Date: Mon Oct 03 2005 - 13:53:18 PDT
>From: "LaFlamme, Jamie" <jamiel@model.com>

>Are you sure that put() should never block?  The LRM isn't specific, but
>one reasonable implementation would be for put() to execute threads
>blocked on a get() before put() returns.  That would reduce the risk of
>thread starvation.

Having the scheduler suspend a thread is not the same thing as the
thread blocking.  A Verilog scheduler is allowed to suspend a thread
pretty much any time it wants to, including within a function call,
even though a function call is not allowed to block.  Since the
scheduler can suspend a thread in a function call at any statement,
it can certainly suspend it at a put() if it likes.

Steven Sharp
sharp@cadence.com
Received on Mon Oct 3 13:53:24 2005

This archive was generated by hypermail 2.1.8 : Mon Oct 03 2005 - 13:53:39 PDT