OK, the problem here is how we have (tried to) protect access to the 
“fTriggersAwaitingHandling” variable, in order to make it safely accessible 
(writeable) by a non-LIVE555 thread.  To date, we have declared this variable 
as “volatile”, but that isn’t the proper mechanism for inter-thread 
communication (see, for example, 
<https://learn.microsoft.com/en-us/cpp/cpp/volatile-cpp?view=msvc-170#iso-conformant>).

Instead, the proper solution will be to define “EventTriggerId” as a 
“std:atomic_flag”.  To date (for 25+ years), I have avoided using the C++ 
standard library in the LIVE555 code, mainly because I wanted to accommodate 
small platforms (e.g., embedded systems) that might need too small a footprint 
to want to include the standard library.  But that’s probably not a realistic 
concern anymore.

So, a future release of the LIVE555 code (hopefully coming within about a week) 
will make this change to define “EventTriggerId” as a “std:atomic_flag”.  (This 
will be #ifdef’d, so that anyone who wants to use the existing (less safe) 
“volatile” implementation, without the standard library, can continue to do so.)

Stay tuned...


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/


_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to