Process Simulate runtime environment should be assumed to be single-threaded.
For example, if you are using any ITxObject, or the TxApplication singleton to access or modify the PS runtime model from a different thread other than the main thread - you will probably get a crash due to concurrent access to shared resources.
That being said, creating threads is possible in the .NET environment, just as long as you make sure not to update or read any information from a Tx object. Typically I might use a worker thread for handling communication (e.g., listening on sockets), but always make sure that there is a thread-safe message queue used between the worker thread and the main thread - which is the only thread to access the PS runtime model.
What exactly is time consuming about your process?
If you share more details about what you are trying to compute/collect, the community might come with other suggestions how to optimize it.