Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

31.2 Mutexe mit Hilfe interner Bibliotheken

31.2 Mutexe mit Hilfe interner Bibliotheken

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
					
#define _AFXDLL
#include "afxmt.h"

#include <stdio.h>
#include "ThreadWrapper.h"

struct SMyThreadData {
	int	iStart;
	int	iEnd;
	int	iID;
	CMutex*	pMutex;
};



// Funktion welche durch den Thread ausgeführt wird ///////////////////////////
DWORD ThreadFunc(CThreadWrapper<SMyThreadData>* pThread) {
	__try {
		pThread->GetData().pMutex->Lock();

		for (int iCount = pThread->GetData().iStart; iCount < pThread->GetData().iEnd && !pThread->IsTerminated(); iCount++) {
			printf("Thread: %i - %i\n", pThread->GetData().iID, iCount);
			Sleep(100);
		} // end of for
	} __finally {
		pThread->GetData().pMutex->Unlock();
	} // end of try

	return 0;
} // ThreadFunc ///////////////////////////////////////////////////////////////
 


// Hauptfunktion der Anwendung ////////////////////////////////////////////////
int main(int argc, char** argv) {
	CMutex				pMutex		= new CMutex(false, NULL, NULL);
	SMyThreadData			sData1		= {0, 10, 1, hMutex};
	SMyThreadData			sData2		= {1000, 1010, 2, hMutex};

	CThreadWrapper<SMyThreadData>*	pThread1	= new CThreadWrapper<SMyThreadData>(&ThreadFunc, sData1);
	CThreadWrapper<SMyThreadData>*	pThread2	= new CThreadWrapper<SMyThreadData>(&ThreadFunc, sData2);

	printf("START\n");

	pThread1->Resume();
	pThread2->Resume();

	// Warten, bis alle Threads fertig sind
	while (!pThread1->IsFinished() || !pThread2->IsFinished()) Sleep(1);

	delete pThread1;
	delete pThread2;

	delete pMutex;
	
	printf("ENDE\n");

	return 0;
} // main /////////////////////////////////////////////////////////////////////
					

In den Zeilen 7 bis 12 wird wieder die Struktur für den Thread definiert und im Gegensatz zu eben, ist in Zeile 11 aus dem Handle ein Zeiger auf ein Mutexobjekt geworden.

In den Zeilen 17 bis 30 finden Sie jetzt wieder die Threadfunktion, welche bis auf zwei Kleinigkeiten, wieder genauso aussieht. In Zeile 19 gebe ich über das Mutexobjekt an, dass folgender Abschnitt geschützt werden soll. In Zeile 26 verlasse ich wieder diesen Abschnitt.

In der "main" Funktion hat sich auch wieder nicht viel geändert. Wieder betrifft es nur das Erzeugen des Mutex, seine Übergabe an die Struktur und seine Freigabe.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012