Bonjour à tous.
Dans mon jeu, quand par exemple le personnage est proche de la fin du terrain, je dois charger le terrain devant lui et supprimer le terrain qu'il y a derrière. L'opération en question doit enregistrer dans plusieurs fichiers environ 800000 entiers et accéder à plus de 6 millions de variables, ce qui fait que lors de ce chargement le rafraichissement de l'affichage s'arrête pendant une ou deux secondes.
Pour éviter cet arrêt assez gênant j'ai donc commencé à mettre en place un thread secondaire permettant de faire ce chargement en fond.
Mais il y a un problème : le moment d'arrêt est toujours présent quand le jeu doit charger le nouveau morceau de terrain. Pourtant je crée bien un sf::Thread avant le while (fenetre.isOpen()) dans le main.
Autre information : le thread secondaire exécute la méthode d'un objet (créé lui aussi au début du main).
Je voudrais donc savoir si il est normal que le thread principal est affecté quand le thread secondaire effectue de lourdes opérations ?
Merci d'avance.
PS : voilà comment j'utilise les sf::Thread :
int main()
{
// initialisations
Monde monde(fenetre, vue, std::round(nombreBlocsCotes + 10));
sf::Thread thread(&Monde::genererNouvellesRegions, &monde);
// initialisations
while (fenetre.isOpen())
{
// gestion des évenements
thread.launch();
// affichage et autres opérations
}
return EXIT_SUCCESS;
}