Go to file
Richard Harrison 9b3265c46c Emesary: lock free performance improvements
After testing with multithreading there were still problems related to
scope and transmitters - because a transmitter that was on the stack
as an object could go out of scope before a notify all had finished
and lead to invalid data and a crash

The solution is to always have Recipients allocated via new() and to
use a shared pointer to manage the scope and garbage collect when the
last reference goes out of scope.

To achieve the threadsafe minimal locking the rules are as follows;

* All recipients must be allocated via new()
* Register and DeRegister will only happen when on the outermost
  level of NotifyAll.
 - all other add or delete will be put into the pending queue and
   added at the start of the next outer notify all
 - at outer level notify all a lock will be taken to process pending
   items
* during the main notify processing there will be no locks - however
  it is also assumed that the recipient list will not be changed
2021-04-11 00:42:49 +02:00
3rdparty NULL check after malloc 2021-02-13 22:25:31 -06:00
CMakeModules CMake: remove .cmake extensions 2021-01-10 13:32:59 +00:00
simgear Emesary: lock free performance improvements 2021-04-11 00:42:49 +02:00
.gitignore Add compile_commands.json to .gitignore 2021-04-01 01:40:22 +02:00
AUTHORS
ChangeLog
CMakeLists.txt Use the find_dependency option to parse Simgear dependencies to FlightGear 2021-03-08 16:15:14 +01:00
COPYING Fix rpmlint/Linux packager complaints 2012-05-05 00:30:16 +02:00
Doxyfile Fix conditional compile logic 2019-12-15 00:18:39 -06:00
DoxygenMain.cxx Various doxygen improvements/fixes. 2018-01-12 08:32:04 +01:00
INSTALL Remove plib dep references from documentation files 2012-08-29 12:08:27 +02:00
NEWS Attempt to sort out the version number mess in preparation for a 1.9.0 release. 2008-12-19 20:39:59 +00:00
README Update README/INSTALL documentation. 2012-06-26 22:43:48 +02:00
README.cmake Remove plib dep references from documentation files 2012-08-29 12:08:27 +02:00
README.OSG Update README/INSTALL documentation. 2012-06-26 22:43:48 +02:00
README.sound Detect AeonWave and if it is installed use it, otherwise fall back to OpenAL. Also let get_available_devices() use C++ strings instead of const char* 2018-06-02 14:06:15 +02:00
README.zlib Updates to remove unneeded and old version of zlib source. 2006-03-23 21:59:59 +00:00
simgear-version Update version file 2020-10-13 22:28:42 +01:00
SimGearConfig.cmake.in Use the find_dependency option to parse Simgear dependencies to FlightGear 2021-03-08 16:15:14 +01:00
Thanks

SimGear - Simulator Construction Tools
======================================
http://www.flightgear.org

SimGear is a set of open-source libraries designed to be used as building
blocks for quickly assembling 3d simulations, games, and visualization
applications.

SimGear is developed by the FlightGear project and also provides the base
for the FlightGear Flight Simulator.

Source code for SimGear is released under the GNU Library General Public
License (LGPL) - see COPYING for license details.

See INSTALL file for help on building SimGear.