I cannot find much documentation or any examples of implementing _BeginCacheScope
and _EndCacheScope
in a custom ArResolver
subclass.
It looks like older releases of Usd included this in the AR1 and initial AR2 default plugins. But current versions have those functions removed. Those older examples required tbb
to get a thread safe cache. Is that why this code fell out of favor?
I was hopeful that the VFX-UsdAssetResolver would show how this works, but it looks like it is using a std::map
directly on the resolver class. It does not implement the cache scope methods. Is this a safe way to implement caching? I fear this is thread-unsafe and will lead to crashes?
What is my best starting point for adding a cache to my resolver in 2024? If the map directly on the resolver is safe then I’ll start with that. Otherwise I’ll go back to the older usd releases and extract the code I see from there?