J'ai un programme en C++ qui exécute un tas de threads pour manipuler les mêmes données. Chacun de ces fils ont un pointeur vers un objet qui est en cours de manipulation, par exemple:Threads C++ et mécanisme de blocage simple?
thread1 et thread2 ont tous deux un pointeur vers Object1
object1-> addSomething() peut être utilisé soit par thread1 ou 2 et se réfèrent à le même objet
Maintenant, ces opérations peuvent poser des problèmes si elles sont effectuées au même moment par les deux threads, donc je veux un mécanisme de blocage simple. Ce que je veux est simplement ceci:
void method()
{
waitUntilFree()
blockForOthers()
doSomething()
unblock()
}
Y at-il un moyen simple de faire cela? Je veux juste bloquer et attendre jusqu'à ce que ce soit gratuit. Cela ne me dérange pas que le fil puisse devoir attendre un moment. Y a-t-il un mécanisme facile à faire? J'utilise Boost pour ces discussions, mais je ne pourrais pas pour la vie de moi trouver un moyen de faire (apparemment) simple bloc-et-attendre chose.
C'est C plutôt que C++ (il est int main() en C++), mais un joli petit exemple pour la API POSIX. Peut-être que quelqu'un devrait mentionner que le mutex est synonyme d'exclusion réciproque, tout fil de discussion détenant le verrou exclut les autres de l'acquérir ... –