How to decide whether to use threads or create separate process altogether in your application to achieve parallelism.
Threads are more light weight, and for the making several "workers" just to utilize all availabe CPUs or cores, you're better of with threads.
When you need the workers to be better isolated and more robust, like with most servers, go with sockets. When one thread crashes badly, it usually takes down the entire process, including other threads working in that process. If a process turns sour and dies, it doesn't touch any other process, so they can happily go on with their bussiness as if nothing happened.