No, not at all!, i come to the realization that this is a harder problem than i thought, i was thinking of modifying the CachedFunction constructor to add a threadsafe keyword, where threadsafe = false would give the current behavior, whereas true would lock the caching stage and evaluation stage,
Other approach is to create different constructors for different uses. a SyncCachedFunction, a ParallelCachedFunction (to do calculations on all threads at once, for example) and others if necessary.
At last. it should be clear to the user what to expect of the created CachedFunction, and those examples are great to bring the expected usage to light. This is also the right moment to do a lot of breaking changes, if those would bring a better package. If you have any request or proposal, those would be very (emphasis on very) appreciated ![]()