Comment faire une fonction asynchrone qui ne bloque pas mon programme

Voila, j'aimerais faire une table d’échange en modbus pour quelle puisse lire des variable cycliquement. mais le problème c'est que je veut faire ça en arrière plan afin d'avoir une actualisation permanente peut importe se que mon programme fait et pour ne pas bloquer mon programme si une erreur de COM survient.

j'ai vu qu'il y avais std::async mais je ne vois pas comment l’implémenter dans mon programme et surtout comment il fonctionne.

j'aimerais pouvoir lancer ma fonction depuis mon main.ino et ma fonction se trouve dans un fichier secondaire .cpp et .h

je suis ouvert a toute piste meme si je doit refaire la structuration de mes programme/fichier.

PS: j'ai une carte arduino pro portenta machine control

Jetez un oeil à Using millis() for timing. A beginners guide et Several things at the same time

+ 1 avec J-M-L

Néanmoins, je voudrais ouvrir une parenthèse avec le RP2040 qui est double cœur.
Pour la majorité des applications c'est probablement un marteau pilon pour enfoncer une punaise mais ses deux cœurs sont simples à mettre en œuvre.

Le cœur 0 est géré avec setup() et loop()
Le cœur 1 est géré avec setup1() et loop1()

En cas de lecture simultanée d'une IO le cœur 0 est prioritaire.
Je n'ai pas été bien loin mais ce doit être la même priorité pour le reste des fonctions.

void setup()
{

}

Void setup1()
{

}

void loop()
{

}

void loop1()
{

}```