Expand description
Alternative Rosie entry points that support sharing between threads
RosieEngines and compiled Patterns can’t be accessed by other threads, so this module implements versions that can, but the tradeoff is runtime performance costs due to locking and copying the results to private buffers
NOTE: I feel like this is a short-term solution. Longer term, I envision a RosieEngine
being separated into two objects; a compiler and a matching engine. Then the matching engine
could be fully reentrant and lock-free, and new compiled patterns could be added atomically
to a matching engine, obviating the need for everything in the thread_portable
module.
I’d like to discuss this direction with Jamie, and possibly even an implementation of the matching engine in safe Rust.
Structs§
- Owned
RawMatch Result - An owned equivalent to RawMatchResult that doesn’t reference any memory inside the Rosie engine
- Portable
Engine - The Rust object representing a Rosie engine that can safely be accessed by multiple threads
- Portable
Pattern - A version of Pattern that can be shared between threads