Module thread_portable

Source
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§

OwnedRawMatchResult
An owned equivalent to RawMatchResult that doesn’t reference any memory inside the Rosie engine
PortableEngine
The Rust object representing a Rosie engine that can safely be accessed by multiple threads
PortablePattern
A version of Pattern that can be shared between threads
OSZAR »