hauptnachrichtenschleife, wo startet man am besten einen thread?
-
warum funktioniert dsa nicht? langsam verzweifle ich;-(
cuvoid SocketThread() { while(1) { } } BOOL CClient_GUIDlg::OnInitDialog() { CDialog::OnInitDialog(); // Hinzufügen des Menübefehls "Info..." zum Systemmenü. std::auto_ptr<boost::thread>(new boost::thread(&SocketThread)); return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten }
-
warum funktioniert dsa nicht? langsam verzweifle ich;-(
cuvoid SocketThread() { while(1) { } } BOOL CClient_GUIDlg::OnInitDialog() { CDialog::OnInitDialog(); // Hinzufügen des Menübefehls "Info..." zum Systemmenü. std::auto_ptr<boost::thread>(new boost::thread(&SocketThread)); return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten }
-
warum funktioniert das nicht, bekomme beim beenden der GUI wieder ein speicheleck!!!? hab nun den thread am heap angelegt...langsam verzweifle ich;-(
cuvoid SocketThread() { while(1) { } } BOOL CClient_GUIDlg::OnInitDialog() { CDialog::OnInitDialog(); // Hinzufügen des Menübefehls "Info..." zum Systemmenü. std::auto_ptr<boost::thread>(new boost::thread(&SocketThread)); return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten }
-
jemand ne idee?
cu
-
Eine Frage: Wie stellst du denn das Speicherleck fest? Woran erkennst du das?
-
Artchi schrieb:
Eine Frage: Wie stellst du denn das Speicherleck fest? Woran erkennst du das?
wahrscheinlich debugmode
und da beim programmbeenden muss ja unten
programm wurde mit 0x00 beendet dranstehen.
wenn speicherlecks steht davor irgendwas mit
BLOCK dann die hexzahlen wo halt
-
hm...ich weiss nicht mehr weiter;-(
ja im debug modus steht da beim beenden der GUI:'Client_GUI.exe': Loaded 'C:\Client_GUI.exe', Symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\ntdll.dll', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\kernel32.dll', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\mfc71d.dll', Symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\msvcr71d.dll', Symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\gdi32.dll', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\user32.dll', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\ADVAPI32.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\RPCRT4.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\SHLWAPI.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\MSVCRT.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\COMCTL32.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\OLEAUT32.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\ole32.dll', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\msvcp71d.dll', Symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\WS2_32.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\WS2HELP.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\Informatik\Informatik_Project\Client_GUI\Debug\boost_thread-vc71-mt-gd-1_32.dll', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\MFC71DEU.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\UXTHEME.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\Programme\Gemeinsame Dateien\Symantec Shared\AntiSpam\ASOEHOOK.DLL', No symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\msvcr71.dll', Symbols loaded. 'Client_GUI.exe': Loaded 'C:\WINDOWS\SYSTEM32\MSCTF.DLL', No symbols loaded. Detected memory leaks! Dumping objects -> {142} normal block at 0x00326640, 24 bytes long. Data: <He > 48 65 14 00 FF FF FF FF 00 00 00 00 00 00 00 00 {141} normal block at 0x003267D8, 8 bytes long. Data: <@f2 > 40 66 32 00 01 CD CD CD Object dump complete. The thread 'Win32 Thread' (0xbb4) has exited with code 2 (0x2). The program '[2144] Client_GUI.exe: Native' has exited with code 2 (0x2).
-
hi!
ich poste mal die: Client_GUIDlg.cpp
http://www.rafb.net/paste/results/hvzlWp67.htmlvielleicht könnt ihr ja was erkennen...
cu
-
hallo,
jemand ne idee was man da machen kann?bye
-
Du musst einfach den Thread beenden bevor du das Programm beendest.
--> thread.join(); // wartet auf Threadende
Problem ist nur:
void SocketThread()
{
while(1)
{
}
}
// <--- auf das ende wartest du ewig.Du musst eine variable (bool) für des Ende erstellen.
Auf diese Variable nur über boost::mutex zugreifen.
Anschließend kannste die zum beenden gleich true setzen um die While schleife zu beenden.cu ralf