1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 <2023> 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 <2023> 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Scan rate '.01 second' not achievable |
From: | Michael Davidsaver via Tech-talk <tech-talk at aps.anl.gov> |
To: | Andrew Johnson <anj at anl.gov> |
Cc: | "Barrett \(US\), Patrick E" <patrick.e.barrett at boeing.com>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Mon, 9 Jan 2023 12:22:39 -0800 |
On 1/6/23 09:24, Andrew Johnson via Tech-talk wrote:
epicsThreadSleepQuantum This function returns the minimum slumber interval obtainable with epicsThreadSleep() in seconds. On most OS there is a system scheduler interrupt interval which determines the value of this parameter. Knowledge of this parameter is used by the various components of EPICS to improve scheduling of software tasks in time when the reduction of average time scheduling errors is important. If this parameter is unknown or is unpredictable for a particular OS then it is safe to return zero.I obviously forgot that last sentence when I wrote the code in dbScan.c which divides by the quantum, so that should get fixed although nobody has actually reported being hit by it in over 10 years.
To my mind, we should drop this last sentence. There are simply too many places where "epicsThreadSleep(epicsThreadSleepQuantum())" is called. eg. epicsThreadOnce() in posix/osdThread.c