Vous êtes sur la page 1sur 1

Cours #1 : Exercices pratiques

1. Que va afficher ce programme?

int total = 0;

Parallel.For(0, 1000000, i =>


{
total++; ++ c’est 2 instructions.
});

Console.WriteLine(total); Fonctionne pas car pas instruction atomique.


Plus lent que en séquentiel meme avec mutex. Beau cas de
reduction.
2. Que va afficher ce programme?

Stopwatch stopwatch = new Stopwatch();


stopwatch.Start();

bool foundIt = false;

Thread thread = new Thread(() =>


{
Thread.Sleep(500);
foundIt = true;
});

thread.Start();

while (!foundIt)
{
}
Optimisation du compilateur brise cela. Va juste regarder le
stopwatch.Stop(); registre.
Solution: Fence. Mettre dans le while. Peut pas
Console.WriteLine($"{stopwatch.Elapsed}"); redonner ce qui vient avant ou après.
Release fence après écriture.

Vous aimerez peut-être aussi