Like many others in this forum I have a critical area in my code and I need to guarantee that not more than one thread run that code at the same time.
int foL = *foM;
int pos1, pos2;
(...)
//lock here
if (foL < *foM){
int temp;
temp = solutionM[pos1];
solutionM[pos1] = solutionM[pos2];
solutionM[pos2] = temp;
*foM = foL;
}
//unlock
(...)
solutionM and foM are global.
I read some topics on this forum and I’m really confused about using mutex. Some say it’s not safe, but I think it’s the only option. So how can I make a mutex or some other code for this type of problem (permutation of values of global variables inside a “IF”)?