Bonjour,
est-ce que quelqu'un pourrait m'indiquer où se situe la différence au niveau du code lorque l'on choisit avec le wizard la création d'un objet ATL
. Monothread
. Cloisonné
. Libre (Free-Threaded)
Merci d'avance
fred
Bonjour,
est-ce que quelqu'un pourrait m'indiquer où se situe la différence au niveau du code lorque l'on choisit avec le wizard la création d'un objet ATL
. Monothread
. Cloisonné
. Libre (Free-Threaded)
Merci d'avance
fred
Extrait de code
Extrait de ATL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class ATL_NO_VTABLE CSockDriver : public CComObjectRootEx<CComSingleThreadModel>, // ici public CComCoClass<CSockDriver, &CLSID_SockDriver>, public IDispatchImpl<ISockDriver, &IID_ISockDriver, &LIBID_MCNNetSocketDriver2Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>, public IDispEventImpl<1, CSockDriver, &__uuidof(_ISockServerEvents)> { public: CSockDriver(); // . . .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class CComMultiThreadModel { public: static ULONG WINAPI Increment(LPLONG p) throw() {return InterlockedIncrement(p);} static ULONG WINAPI Decrement(LPLONG p) throw() {return InterlockedDecrement(p);} typedef CComAutoCriticalSection AutoCriticalSection; typedef CComAutoDeleteCriticalSection AutoDeleteCriticalSection; typedef CComCriticalSection CriticalSection; typedef CComMultiThreadModelNoCS ThreadModelNoCS; }; class CComSingleThreadModel { public: static ULONG WINAPI Increment(LPLONG p) throw() {return ++(*p);} static ULONG WINAPI Decrement(LPLONG p) throw() {return --(*p);} typedef CComFakeCriticalSection AutoCriticalSection; typedef CComFakeCriticalSection AutoDeleteCriticalSection; typedef CComFakeCriticalSection CriticalSection; typedef CComSingleThreadModel ThreadModelNoCS; };
Partager