Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CreateThread - Frage

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
12.05.2005, 10:54 Uhr
~Thread-Frage
Gast


Hallo,

Ich bin gerade vom C++Builder auf VC++ umgestiegen und habe jetzt eine Frage zu Threads: Bei Delphi und auch beim C++ Builder sollte man zum erzeugen eines Threads ja immer BeginThread nehmen und nicht CreateThread, weil BeginThread gleichzeitig das Flag "Multithread" setzt und so auch bei mehreren Threads nix schief gehen kann. Bei VC++ gibts ja, soweit ich das richtig sehe, nur CreateThread (und Afxbeginthread, was ich aber nicht verwenden möchte weil ich dann afx noch zusätzlich mit einbinden muss). Wenn ich über CreateThread einen Thread aufrufe, was muss ich dann tun um den Aufruf auch Mutithread-sicher zu machen, also wo muss ich das Flag setzen?

Danke & LG Markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.05.2005, 11:18 Uhr
~CDW
Gast


bei Delphi und C++ Builder muss man es auch nicht zwansläufig machen - nur wenn man VCL verwendet. VCL ist nämlich nicht threadsicher und deshalb werden solche Verrenkungen gebraucht und gemacht (übrigens soll es etwas komplexer sein als nur "Flag" zu setzen). Für VC++ gilt also dasselbe: solange man keine threadunsicheren libs verwendet muss man nur sicherstellen dass nicht mehrere Threads auf eine Variable zugreifen: dafür gibt es z.B
InterlockedExchange, CriticalSection Funktionen,Events usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.05.2005, 11:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


und wenn man mfc verwendet sollte man auf "Multithreaded * MFC" umstellen, das steht meist standardmäßig auf "Singlethreaded".
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.05.2005, 11:41 Uhr
~Thread-Problem
Gast


Mhh seltsam, nein die MFC verwende ich garnicht. Aber trotzdem klappt das mit meinem Thread nicht
Ich habe zwei Programme. In dem ersten rufe ich einen Thread so auf:

C++:
hThreadHandle = CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE) logschreiben, NULL, NULL, NULL );



Hier die Thread-Prozedur:


C++:
UINT logschreiben(LPVOID pParam)



Klappt auch wunderbar im ersten Programm, dort ist der Thread der einzige und läuft auch wie gewünscht.
Jetzt habe ich den Code(und die Prozedure) in das zweite Programm kopiert(in dem schon vorher einige Threads gestartet werden, aber mit anderer Thread-Prozedure). Wenn ich jetzt mit dem Code oben den neue Thread aufrufen will, sehe ich zwar im Taskmanager, das ein neuer Thread erzeugt wurde, aber der Thread läuft nicht an (Hab zur Kontrolle auf die ersten Zeile in der Thread-Prozedure einen Breakpoint gesetzt). Weiss jemand woran das liegen könnte?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.05.2005, 16:41 Uhr
Spacelord
Hoffnungsloser Fall


Die Funktionen die die C Runtime threadsicher machen(eigene tiddata-Struktur) heissen _beginthread und _beginthreadex.
Wobei man letztere nutzen sollte.
Zu deinem Problem müsste man mehr Code sehen.Mit dem bisschen kann man nicht viel anfangen...

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
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: