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: Questions about channel access C API programming |
From: | "Johnson, Andrew N. via Tech-talk" <[email protected]> |
To: | Abdalla Ahmad <[email protected]>, "[email protected]" <[email protected]> |
Date: | Tue, 5 Mar 2019 16:45:01 +0000 |
On 3/5/19 8:08 AM, Abdalla Ahmad via Tech-talk wrote:
If you want to minimize the time between the two puts, you should reorganize the code so all the name searches happen first and get resolved, then do both puts together, more like this: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <cadef.h> int main() { srand(time(0)); double v1 = ((rand() % 100) / 10.0) * 1E-7; double v2 = ((rand() % 100) / 10.0); chid pvID1; chid pvID2; ca_task_initialize(); ca_search("Analog_1", &pvID1); ca_search("Analog_2", &pvID2); ca_pend_io(1.0); ca_put(DBR_DOUBLE, pvID1, &v2); ca_put(DBR_DOUBLE, pvID2, &v2); ca_flush(); ca_task_exit(); }Of course this code won't behave quite the same as your version if the Analog_2 record isn't available, and it really should be checking the status values returned by all CA routines to detect those kinds of problems. If you don't do that your control system is likely to be very brittle, meaning that when something minor goes wrong (such as a name search taking longer to complete than the 1 second you are allowing because the load on your network has increased since you tested the code) the knock-on effects could bring down your whole control system. For code that needs to be event driven like I suspect most Qt applications are, you probably shouldn't be using the basic API routines ca_search() and ca_pend_io() either, but should switch to the event-driven API routines that take callback routines that are called when the operation completes. - Andrew -- Arguing for surveillance because you have nothing to hide is no different than making the claim, "I don't care about freedom of speech because I have nothing to say." -- Edward Snowdon |