Puoi ottenere lo stesso risultato in entrambi i modi, tuttavia il secondo approccio è sempre preferibile rispetto al ricorso a variabili globali, che rischiano di incasinare ad arte il tutto (in particolare quando hai molti thread e quando le interazioni tra essi sono complesse). Visto che la pthread_create() ti dà la possibilità di passare argomenti alla funzione invocata dal thread, ti conviene sfruttarla.