Is there a better way to thread this class function?
How many instances of foo are you going to have?  Spawning a large number of threads or forking a large number of processes isn't going to scale well in terms of both CPU and memory resources.

Another approach that generally has better scalability is a thread pool.  The basic idea is that you have a fixed number of threads that pull and execute tasks from a queue, resulting in better resource utilization.