Es un tema bastante extenso como para preguntarlo en forma tan abierta. Tenes que especificar, como mínimo, sobre que sistemas.
En principio, para programas relativamente sencillos los threads es todo lo que necesitas. Tal vez en programas mas complejos el mantenimiento de los threads y el futuro desarrollo puede dificultarse bastante, ya que el hecho de usar multithreading acarrea problemas como las
race conditions, aunque eso lo podes solucionar usando mutexes. De esta forma también traes a escena otros problemas como los
deadlocks y los
livelocks, solucionables, pero mas desde el lado del análisis del algoritmo que desde la parte practica.
En todo caso si vas por el lado del multithreading, a mi me gusta boost por varias razones, pero supongo que con una o dos búsquedas encontraras análisis mas extensos que lo que yo te pueda decir ahora en un solo post.
Para analizar si necesitas usar o no usar threads, primero hay que saber no solo sus grandes problemas si no también sus beneficios, como por ejemplo compartir recursos, lo cual no requiere mucho trabajo extra ya que comparten el mismo espacio de direcciones del proceso. Ademas son mas simples en el sentido que hay menos complejidad interna por thread que por proceso individual, lo cual obviamente impacta en el rendimiento.
Como ultimo sobre threads, cada sistema los trata de manera distinta y en pos de poder optimizar el rendimiento, primero necesitas saber como funciona el sistema en el cual quieres trabajar (Por ejemplo, con que prioridad trata el sistema a determinados threads)
Otro acercamiento al problema es el multiproceso, que a grandes rasgos es todo lo contrario al multithreading en cuanto a ventajas y desventajas, pero por ahora dejo el post aca si no se hace demasiado largo. Ten en cuenta que hay varios acercamientos al tema, no solo estos dos, y cada uno tiene sus ventajas y desventajas y obviamente a pesar que pueda gustarme a mi o a cualquiera una u otra forma, depende mas que nada del escenario de la aplicacion que de los gustos de cada programador.
Algunos links que tenia por ahí guardados:
Si tenes dudas ya sabes.
Saludos!