Non so con cosa stai programmando ma in posix thread si può passare a pthread_create una funzione con parametri. Personalmente metto tutto in una struttura e la passo dopo cast a (void*), poi nella funzione faccio il cast inverso al puntatore della struttura. Non è una soluzione elegante ma a me funziona. Forse anche la tua infrastruttura per il multithreading permette di passare funzioni che accettano parametri. Alle bruttissime, penso si possano usare variabili globali con tutti i mutex che servono (curioso: pure io sto lavorando alla stessa cosa, solo che è per interfacciare arduino e altri hardware).