Это типовая задача для драйвера. Цытат из зарубежной классики - "драйвер - разделяемый процессам код" и выносить это дело в отдельный поток просто нелогично. Если заказчик такой умный, че он строем - то не ходит?
(«Телесистемы»: «Конференция «Микроконтроллеры и их применение»»)