ach ja, gerade erst gecheckt - vlt war es doch noch auch ein Kommunikationsproblem und ich hatte es nicht ausreichend erläutert:

das pid-task create soll nicht von main oder einer anderen Funktion aus, sondern automatisch innerhalb der PID Klasse selber gestartet werden.
Die PID Klasse sollte dafür dann (mindestens) 3 Methoden enthalten,
zum einen eine für den Funktionsaufruf selber ähnlich wie
PID.start(double p, double i, double d, char mode);

PID.start initialisiert damit die p,i,d Konstanten und die Variable Modus (erreichen und dann abschalten oder kontinuierlich halten)
und dann wird damit anschließend ebenfalls die 2. Methode, nämlich
PID.thread
quasi lokal gestartet, nicht global.

später, nach
new PID PID_A;

soll dann alles automatisch laufen durch
Code:
PID_A.start(0.5,  10.0,  0.1,  true);
Nun läuft der damit intern creierte pthread-Task bis zur Selbstterminierung oder bis zur Beendigung durch einen externen Befehl.

die dritte Methode muss dafür lauten
PID.stop();

nach externem Aufruf per
Code:
PID_A.stop();
soll dann der momentan laufende PID_A-Task mit seiner momentan vergebenen PID-ID gestoppt und dann gejoint werden (falls er tatsächlich läuft, ansonsten wirkungslos).


analog das ganze für jede andere erzeugte und dann bei Bedarf gestartete PID-Instanz
new PID PID_B;
new PID PID_C;
new PID PID_D;
new PID PID_E;
usw.