J´aimerais utiliser la classe:
class CSingleLock
{
// Constructors
public:
CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE); Seulement il me faut une instance d´un CSyncObject (je sais pas trop pquoi).
Mais CSyncObject a la fonction Unlock() purement virtuelle.. Pourquoi et comment utiliser CSingleLock???
Meuarf j´ai instancié un CMutex histoire d´avoir une instance de CSyncObject.. Ca a l´air de marcher..
Quelqu´un peut m´éclairer sur le sens de tt ça???
BENB
100% Lux.
Posté le 27-03-2001 à 09:36:34
Je connais mieux le multithreading POSIX que celui de MS.
Mais de toute evidence il y a plusieurs types de synchronisations
etCSyncObject est une classe abstraite representant une synchronisation. Le Cmutex est une classe de synchronisation concrete, mais il y en peut etre d'autres. En POSIX il y a des verrous. Plusieurs Threads peuvent lire simultanement, mais pour ecrire on s'assure qu'il n'y a pas d'autre threads en lecture/ecriture... etc.
Donc il faut que tu cherches quels sont les heritiers de CSyncObject... et tous doivent marcher (en theorie bien sur...)
H4dd3R
Q2
Posté le 27-03-2001 à 09:41:03
Mouais ok merci BENB!!
H4dd3R
Q2
Posté le 27-03-2001 à 15:18:45
Non, ça marche pas!! A l´instanciation, il rentre dans:
CSingleLock::CSingleLock(CSyncObject* pObject, BOOL bInitialLock)
{
ASSERT(pObject != NULL);
ASSERT(pObject->IsKindOf(RUNTIME_CLASS(CSyncObject))); Et mon pObject, adresse d´un CMutex, ne lui convient pas.. HELP!!
verdoux
And I'm still waiting
Posté le 27-03-2001 à 15:43:17
L'erreur doit être ailleurs, les classes dérivées de CSyncObject sont CEvent, CMutex,CCriticalSection, et CSemaphore. Donc un CMutex doit convenir.
H4dd3R
Q2
Posté le 27-03-2001 à 15:47:12
Voici mon source, je vois pas trop d´ou peut venir l´erreur:
#include <afxmt.h>
class wouf: public CSingleLock
{
CMutex M;
public:
wouf();
};