Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » WaitForMultipleObjects

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.07.2004, 21:13 Uhr
~Tobias
Gast


Hallo zusammen,
ich habe ein kleines Prog geschrieben, aus dem ich Threads mit hilfe einer Semaphore unterschiedlich laufen lassen möchte. zB nacheinander, 2 gleichzeitig, oder alle parallel. Aber irgendwie will dies nicht so richtig laufen. Ich benutze die .Net 2003 und schreibe in c++.
Das dumme ist nur das ich auf einem anderen Rechner das Prog schon am laufen habe unter VC++6. Der Unterschied ist die Geschwindigkeit und die neuere IDE. Vor allem läuft auch eine WaitForSingleObject.

Gibt es unter .Net 2003 etwas zu beachten wen ich Semaphoren und WaitForMultipleObjects benutze?

Tobias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.07.2004, 21:18 Uhr
~Tobias
Gast


Oder mache ich da doch etwas falsch?

hSemaphore = CreateSemaphore(
NULL,
Parallel,
Parallel,
NULL);

for (int i = 1; i <= 4; i++){
sprintf (filename[i-1],"MesswertTabelle_%i.dat",i);
WaitForSingleObject(hSemaphore,INFINITE);
hThread[i-1] = CreateThread (NULL,
0,
Sorter,
filename[i-1],
0,
&ThreadId[i-1]);
}

WaitForMultipleObjects(4,hThread,true,INFINITE);

Am Ende der Threadfunktion steht ein ReleaseSemaphore(hSemaphore,1,NULL).
Danke
Tobias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.07.2004, 22:22 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Ohne groß auf den Quelltext geschaut zu haben: Ist das ein .NET-Programm oder Win32, nur mit VS .NET compiliert?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.07.2004, 09:10 Uhr
~Tobias
Gast


Morgen!
Es ist ein W32 Prog. Ich hab nochmal versucht es unter VC++6 zu compilieren und da läuft es. Irgendwie funktioniert die ReleaseSemaphore unter der .net framework nicht richtig. Und wenn ich die WaitForSingleObject(hSemaphore,NULL) raus nehme dann hält die WaitForMultipleObjects das Programm nicht an.

Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.07.2004, 11:32 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Ich schieb Dich mal ins VC++-Forum; das Problem hat nix mit .NET zu tun. Dass es mit VS .NET compiliert ist, dürfte auch keinen Einfluß drauf haben, obs jetzt funktioniert oder nicht, die Win-API-Funktionen sind schließlich die selben...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.07.2004, 17:12 Uhr
~Tobias
Gast


Ok,
dachte halt nur.

Bin etwas weiter. Und zwar wenn ich einen Thread erzeuge dann muss ich ja eine Threadfunktion angeben. Von dieser wird dann ein Abbild erzeugt, sodaß ich meherer Threads mit der gleichen Funktion starten kann.

//korrigiert mich bitte wenn ich da falsch liege!

Wenn ich nun aus der Threadfunktion (ich nenne sie mal so) eine andere Klassenmethode aufrufe dann wird von dieser kein Abbild erzeugt und somit arbeiten alle Threads mit der (physikalisch) gleichen Funktion. Da ich einen HT Prozessor habe der mehr oder weniger wirklich parallel arbeiten kann wird auf den selben Speicherbereich gleichzeitig mehrfach zugegriffen und das bringt mir dann die wirren Feher.

//korrigiert mich bitte wenn ich da falsch liege!

Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: