Salut,
Alors voilà je ne sais pas trop comment utiliser un mutex afin qu'il puisse lock un boût de code à l'intérieur d'une méthode qui est elle même utilisée par un thread.
Voici un code minimal qui montre ce que je fais dans mon programme et qui ne fonctionne pas (ça compile mais l'usage du mutex n'est pas fonctionnel)
main.cpp:
#include "objet.h"
int main()
{
Maclasse obt;
sf::Thread t(&Maclasse::func, &obt);
t.launch();
mutex.lock();
for(int i=0;i<500;i++)
std::cout << "aurevoir" << std::endl;
mutex.unlock();
return 0;
}
objet.h
#include "header.h"
class Maclasse
{
public:
void func();
private:
};
objet.cpp
#include "objet.h"
void Maclasse::func()
{
mutex.lock();
for(int i=0;i<500;i++)
std::cout << "bonjour" << std::endl;
mutex.unlock();
}
header.h
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <math.h>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Network.hpp>
static sf::Mutex mutex;
Avec ce code, bonjour et aurevoir s'affichent mélangés dans la console, ce que je souhaiterai éviter.
Merci pour votre lecture et votre temps, j'attends vos conseils
.