By binding *inferencing-state* around all KnowledgeWorks operations in a thread's main function as in the example below, its value can be unique to each thread.
(defun test-1-counter (name)
(let* ((*inferencing-state* nil)
(step (1+ (random 10)))
(limit (* step (+ 2000 (random 100)))))
(mp:process-run-function (format nil "Test ~D" index)
KnowledgeWorks and Prolog User Guide (Unix version) - 6 Dec 2011