On Friday 28 January 2011 19:57:02 Till Straumann wrote:
> If multiple threads block on the same event then the current
> implementation (posix) may spuriously wake up more than
> one thread as a result of epicsEventSignal().
>
> This is because the underlying pthread_cond_signal()/pthread_cond_wait()
> explicitly have these same semantics.
>
> IMO it would be a good idea to change epicsEventWait and
> epicsEventWaitWithTimeout so that they handle this possible
> case (and yield the same semantics as the RTEMS and vxWorks
> variants).
Could someone add a failing test to libCom/test/epicsEventTest.cpp to try and
demonstrate this issue please. I don't have a proper understanding of what
the issue is yet, but I don't know the pthreads API very well — I'm not
denying that an issue exists, just trying to understand it. I'm also
wondering why the line above the if() that you suggest converting into a
while() might contain the comment "no need for while since caller must be
prepared for no work."
- Andrew
--
If a man is offered a fact which goes against his instincts, he will
scrutinize it closely, and unless the evidence is overwhelming, he will
refuse to believe it. If, on the other hand, he is offered something
which affords a reason for acting in accordance to his instincts, he
will accept it even on the slightest evidence. -- Bertrand Russell
- Replies:
- Re: epicsEvent (posix implementation) bug ? Till Straumann
- References:
- epicsEvent (posix implementation) bug ? Till Straumann
- Navigate by Date:
- Prev:
RE: ca_create_subscription element count Jeff Hill
- Next:
Re: ca_create_channel memory management pthomas
- 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
- Navigate by Thread:
- Prev:
RE: epicsEvent (posix implementation) bug ? james.rowland
- Next:
Re: epicsEvent (posix implementation) bug ? Till Straumann
- 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
|