store/[org.clojure/clojure "1.8.0"] clj::clojure.core/bound-fn*

Official Documentation

Add notes
Arities
==================================================
   [f]

Docstring
==================================================
  Returns a function, which will install the same bindings in effect as in
  the thread at the time bound-fn* was called and then call f with any given
  arguments. This may be used to define a helper function which runs on a
  different thread, but needs the same bindings in place.

Source

(defn bound-fn*
  "Returns a function, which will install the same bindings in effect as in
  the thread at the time bound-fn* was called and then call f with any given
  arguments. This may be used to define a helper function which runs on a
  different thread, but needs the same bindings in place."
  {:added "1.1"
   :static true}
  [f]
  (let [bindings (get-thread-bindings)]
    (fn [& args]
      (apply with-bindings* bindings f args))))

Example 1

Edit
(def ^:dynamic *some-var* nil)

(defn f []
  (println *some-var*))

;; run f without a new binding
(f)
;; > nil
;; => nil

;; run f with a new binding
(binding [*some-var* "hello"]
  (f))
;; > hello
;; => nil

;; run f in a thread with a new binding
(binding [*some-var* "goodbye"]
  (.start (Thread. f)))
;; > nil
;; => nil

;; run a bound f in a thread with a new binding
(binding [*some-var* "goodbye"]
  (.start (Thread. (bound-fn* f))))
;; > goodbye
;; => nil

Uses on crossclj