Salut, je me trouve fasse a un petit problème, je fait donc appelle au connaissance d'un peu tous le monde .
Alors voila, j'ai du multi-threader une application serveur pour qu'elle puisse supporter plus d'utilisateurs. J'ai était embêté avec les problèmes d'exceptions lié au multi-accès dans les containers (tel que des list, des set ...etc).
J'ai, en premier lieux utilisé des RW mutex, plus particulièrement les ACE_RW_Thread_Mutex. Donc, a chaque lecture de containeur je procédé comme il suit :
Pour les écritures, je procède comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 lockContaineur.acquire_read(); for(std::set<T>::iterator itr = containeur.begin(); itr != containeur.end(); itr++) { // on traite les informations } lockContaineur.release()
Le problème est que, dans les thread qui on les plus gros containers, le temps d'exécution est très long (je pense que le problème viens des lock sur les write, qui attente bien trop longtemps).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 lockContaineur.acquire_write(); containeur.insert(T); lockContaineur.release();
Ma question est la suivante : y a il un moyen plus rapide ou plus efficace pour garder thread-safe mes containers ? Merci
Partager