Freecell Solver does not use global variables (except for constants) or such that are statically defined within a function. All the non-temporary variables are present within structs, so they can easily be instantiated.
One should note that several distinct instances of the solving algorithm can be instantiated and made to run side by side or alternately.