What environment are you running?
Its a combination of IFD settings and map configuration.
If you are going to multithread you'll need to make sure that all output files have unique names. Otherwise, you may run into problems where instance A hasn't relinquished control of it's output when instance B needs it. This includes non-unique log and trace file names. Also, in the IFD the workfile prefixes must be 'unique', skip if busy must be 'no' and backups must be off. There may be something I missing but I'm at home and working from mem. Let me know if this doesn't work.
FYI: I ran some batch and realtime tests, multithreading input. I used small files, larger files and a combination. The results were that multithreading took longer than sequential processing.
One of the things that may have negatively affected my testing was that the service is running on a 1 CPU machine.
I'll be interested in hearing how it goes.
eyetry