Bonjour,
je cherche des infos sur comment partager une CStringList entre 2 thread, un qui la remplirait et l'autre qui la viderai
nb : je cherche pas une solution toute faite mais des tut, cours, exemple ...
jvois pas ou chercher sur le site
merci
Bonjour,
je cherche des infos sur comment partager une CStringList entre 2 thread, un qui la remplirait et l'autre qui la viderai
nb : je cherche pas une solution toute faite mais des tut, cours, exemple ...
jvois pas ou chercher sur le site
merci
salut,
l'emploi d'un objet CMutex devrait suffire , mutex == mutual exclusion.
pour acceder à la ressource protégée il suffit de faire Lock(),et Unlock() a la fin du traitement.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
en fait, il faudrait que ce soit non blocant,
jm'explique,
jai un processus qui doit absolument tourner en continu et remplir une stringlist,
un second processus doit tourner en parallele et upper ces infos sur le net, au fur et a mesure qu'il up, les données doivent être supprimée de la liste une fois uppées.
Dans ce cas, tu ne peux pas te permettre que ce soit non bloquant, car en cas d'acces simultané, tu va tout faire planter (ou, dans le meilleur cas, tu aura des effets de bords incontrôlés). Mais ça ne pose pas de problème: quand tu veux faire un RemoveAt() ou un AddTail(), tu les insère dans une boucle while (tant que CMutex.IsLock()) avec un wait.
Ensuite, viens le problème de savoir où tu met ta variable (la CStringList). En effet, souvent l'utilisation de threads necessite des callbacks. Mais ce n'est peut-être pas ton cas.
??tu les insère dans une boucle while (tant que CMutex.IsLock()) avec un wait.
c'est quoi ce wait ?
j'avais cru comprendre qu'en faisant :
ca suffisait, l'instruction sLock.Lock(); n'est pas deja blocante ? en attente que le mutex soit libre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CSingleLock sLock(&(m_pOwner->m_mutex)); sLock.Lock(); // code sensible sLock.Unlock();
est ce que je me trompe ?
ouioui pardon, j'ai confondu avec la méthode qui consiste à utiliser des WaitFor*Oject(). Désolé.
Donc non, tu ne te trompes pas.![]()
Partager