The export providers like:
have dedicated constructors that accept parameter (bool isThreadSafe) indicating that it should be "true if export provider must be thread-safe; otherwise, false.".
We know that even if we specify "true" - above classes won't be thread-safe for operations that causes recomposition (e.g. executing composition or exports change in the uderlying catalog).
Does it still means that if we provide synchronization for operations causing recompositon - other operations will be guaranteed to be thread safe? (assuming isThreadSafe=true)
- we set isThreadSafe=true
- we put lock on operations causing recomposition (so that Compose(...), Catalogs.Add(...) are synchronized)
- we do not synchronize GetExports operations or access to the exported objects via Lazy<> imports
Does it is still thread-safe?