strtok()
non è MT-safe perché memorizza alcune variabili intermedie a livello globale e le riutilizza ad ogni chiamata (vedi che non devi passare di nuovo la stringa ogni volta che chiami strtok()
). Puoi dare un'occhiata alle pagine man dei metodi che stai utilizzando ed è sempre indicato alla fine se è MT-safe o meno.
Quando un metodo non è MT-safe (multi-thread sicuro o rientrante), dovresti cercare lo stesso metodo con il suffisso _r che significa rientrare. Nel tuo esempio, strtok_r()
come suggerito nell'altra risposta.
strtok()
non è rientrante quindi non dovrebbe essere usato da applicazioni con thread, usa strtok_r()
invece.