Io ho affrontato la stessa cosa per il mio telescopio. Nel mio caso ho un thread che comunica con la porta seriale e preleva le richieste sotto forma di pacchetti da uno stack thread safe che mi sono creato e che viene popolato in modo asincrono dagli altri thread. A turno tutte le richieste vengono processate, una dopo l'altra. Dal momento che vari software potevano pilotare la montatura del mio telescopio ho usato un'architettura client/server TCP/IP.