Merci, je sais, c'est ce que j'ai expliqué plus tôt (au début du thread auquel je m'auto repond.). C'est assez enervant quand on essaye d'avoir une discussion un peu plus avancé de se faire répondre ce que l'on a préalablement expliqué plus tôt. (Un peu comme sur le chan irc d'ubuntu, et depuis peu d'arch linux… Quand tu as un soucis, les seuls aides que tu obtient te conseil des trucs que tu as déjà testé ;)
Mon problème c'est que je n'ai jamais réussi à générer un bout de code tel que:
while(variable){}
avec variable modifiée à l’extérieur et que cela génère une boucle infinie. Automatiquement GCC et Clang me régénérait des fetch pour mettre à jour tout cela. Donc je voulais savoir si j'étais dans un cas bien défini ou pas.
Mais c'est bon, j'ai trouvé un exemple tout con qui marche bien. Stop en -O0 et boucle infinie au dela.
// g++ -std=c++11 -Wall -Wextra -lpthread fichier.cpp
#include <thread>
#include <iostream>
#include <unistd.h>
int f;
void thread1()
{
while(!f);
}
int main()
{
f = 0;
std::thread t1(thread1);
// give t1 some time to run
sleep(1);
f = 1;
t1.join();
}
[^] # Re: Ai-je bien compris ?
Posté par Guillaum (site web personnel) . En réponse au journal Performances des processeurs Intel et optimisation. Évalué à 2.
Merci, je sais, c'est ce que j'ai expliqué plus tôt (au début du thread auquel je m'auto repond.). C'est assez enervant quand on essaye d'avoir une discussion un peu plus avancé de se faire répondre ce que l'on a préalablement expliqué plus tôt. (Un peu comme sur le chan irc d'ubuntu, et depuis peu d'arch linux… Quand tu as un soucis, les seuls aides que tu obtient te conseil des trucs que tu as déjà testé ;)
Mon problème c'est que je n'ai jamais réussi à générer un bout de code tel que:
while(variable){}
avec variable modifiée à l’extérieur et que cela génère une boucle infinie. Automatiquement GCC et Clang me régénérait des fetch pour mettre à jour tout cela. Donc je voulais savoir si j'étais dans un cas bien défini ou pas.
Mais c'est bon, j'ai trouvé un exemple tout con qui marche bien. Stop en -O0 et boucle infinie au dela.