From 159ecd02f2fa752ecd9feadd4630b390ec9ac396 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 28 Mar 2001 16:30:00 +0000 Subject: [PATCH] use C++ API --- src/libCom/test/epicsThreadPrivateTest.cpp | 76 +++++++++++----------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/src/libCom/test/epicsThreadPrivateTest.cpp b/src/libCom/test/epicsThreadPrivateTest.cpp index 49bff17f0..04acf7f0e 100644 --- a/src/libCom/test/epicsThreadPrivateTest.cpp +++ b/src/libCom/test/epicsThreadPrivateTest.cpp @@ -7,72 +7,70 @@ #include "epicsThread.h" #include "epicsAssert.h" +static epicsThreadPrivate < bool > priv; + static bool doneFlag = false; -extern "C" void epicsThreadPrivateTestThread ( void *pParm ) + +extern "C" void epicsThreadPrivateTestThread ( void * ) { - epicsThreadPrivateId id = static_cast < epicsThreadPrivateId > ( pParm ); - assert ( 0 == epicsThreadPrivateGet ( id ) ); + assert ( 0 == priv.get () ); static bool var; - epicsThreadPrivateSet ( id, &var ); - assert ( &var == epicsThreadPrivateGet ( id ) ); + priv.set ( &var ); + assert ( &var == priv.get () ); doneFlag = true; } -inline void callItTenTimes ( const epicsThreadPrivateId &id ) +inline void callItTenTimes () { - void *pParm; - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); - pParm = epicsThreadPrivateGet ( id ); + bool *pFlag; + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); + pFlag = priv.get (); } -inline void callItTenTimesSquared ( const epicsThreadPrivateId &id ) +inline void callItTenTimesSquared () { - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); - callItTenTimes ( id ); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); + callItTenTimes (); } void epicsThreadPrivateTest () { - epicsThreadPrivateId id = epicsThreadPrivateCreate (); - assert ( id ); static bool var; - epicsThreadPrivateSet ( id, &var ); - assert ( &var == epicsThreadPrivateGet ( id ) ); + priv.set ( &var ); + assert ( &var == priv.get() ); epicsThreadCreate ( "epicsThreadPrivateTest", epicsThreadPriorityMax, - epicsThreadStackSmall, epicsThreadPrivateTestThread, id ); + epicsThreadStackSmall, epicsThreadPrivateTestThread, 0 ); while ( ! doneFlag ) { epicsThreadSleep ( 0.01 ); } - assert ( &var == epicsThreadPrivateGet ( id ) ); - epicsThreadPrivateSet ( id, 0 ); - assert ( 0 == epicsThreadPrivateGet ( id ) ); + assert ( &var == priv.get() ); + priv.set ( 0 ); + assert ( 0 == priv.get() ); epicsTime begin = epicsTime::getCurrent (); static const unsigned N = 100000u; for ( unsigned i = 0u; i < N; i++ ) { - callItTenTimesSquared ( id ); + callItTenTimesSquared (); } double delay = epicsTime::getCurrent() - begin; delay /= N * 100u; // convert to sec per call delay *= 1e6; // convert to micro sec printf ( "It takes %f micro sec to call epicsThreadPrivateGet()\n", delay ); - - epicsThreadPrivateDelete ( id ); }