[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orekit Developers] Work In Progress for thread safety



Hi all,

Some progress has been made on thread-safety for Orekit (see issue <https://www.orekit.org/forge/issues/3>).

As discussed on this list and on the issue, we have set up a thread-safe TimeStampedCache that do not use synchronization at all but rely on more efficient mechanisms (read-write locks). The rationale is to have thread safety that works even when threads are not tightly bound to some dates interval. This corresponds to two major use cases:
 - one where threads are used in a pool (see ExecutorService and the whole
   java standard concurrent package)
 - one where threads are created and shut down at high frequency, a new thread
   being used for each request

Of course, it also supports applications where threads are completely under control and each thread is tightly bound to a date range.

This work started on a dedicated branch, and has now been merged back into master. As of writing, the general TimeStampedCache framework is in place for the simplest case of leap seconds handling (the UTCScale class). It will be extended to all other Orekit caches and can also be used at application level (people can for example need cached orbits).

I would be happy to get some feedback from users. If you have multi-threaded applications, could you check the behaviour of the current implementation on dates ? Be aware that for now only UTC-TAI relies on the new thread-safe mechanism and for example frames are not thread-safe yet (but will probably be soon).

Thanks for your help
Luc, on behalf of the Orekit team

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.