Click here to Skip to main content
15,887,214 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionMFC and edit controls Pin
LCI14-Feb-06 3:51
LCI14-Feb-06 3:51 
AnswerRe: MFC and edit controls Pin
Eytukan14-Feb-06 3:56
Eytukan14-Feb-06 3:56 
GeneralRe: MFC and edit controls Pin
LCI14-Feb-06 4:04
LCI14-Feb-06 4:04 
GeneralRe: MFC and edit controls Pin
toxcct14-Feb-06 4:07
toxcct14-Feb-06 4:07 
AnswerRe: MFC and edit controls Pin
David Crow14-Feb-06 4:24
David Crow14-Feb-06 4:24 
QuestionTerminating a blocked thread Pin
masnu14-Feb-06 3:47
masnu14-Feb-06 3:47 
AnswerRe: Terminating a blocked thread Pin
Calc2014-Feb-06 4:16
Calc2014-Feb-06 4:16 
GeneralRe: Terminating a blocked thread Pin
Stephen Hewitt14-Feb-06 11:57
Stephen Hewitt14-Feb-06 11:57 
Your asking for trouble even thinking of calling TerminateThread. Here's an example program which shows the kind of thing that can go wrong:

------------------------------------------
#include <windows.h>

CRITICAL_SECTION g_cs;

void ShowMessageBox()
{
EnterCriticalSection(&g_cs);
MessageBox(NULL, "Hello", "ShowMessageBox", MB_OK);
LeaveCriticalSection(&g_cs);
}

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
ShowMessageBox();
return 0;
}

int main(int argc, char* argv[])
{
InitializeCriticalSection(&g_cs);

// Start thread.
DWORD ThreadID;
HANDLE hThread = CreateThread(NULL, 0, &ThreadProc, 0, 0, &ThreadID);

// Wait for one second then kill the thread.
// It still holds the CRITICAL_SECTION!!!
Sleep(1000);
TerminateThread(hThread, 0);

// We've killed the "ShowMessageBox" API, permanently, calling it now
// causes this thread to dead lock!
ShowMessageBox();

DeleteCriticalSection(&g_cs);

return 0;
}
------------------------------------------

In this program calling TerminateThread permanently breaks ShowMessageBox because we killed the thread when it still held a lock. This is the worst kind of bug as it's very hard to reproduce as it's sensitive to timing. If you're calling Win32 functions many of them will briefly hold locks, if you terminate a thread while it is hold such a lock you're screwed.

Moral: Don't call TerminateThread. There are exceptions but very few.

Steve
AnswerRe: Terminating a blocked thread Pin
David Crow14-Feb-06 4:29
David Crow14-Feb-06 4:29 
GeneralRe: Terminating a blocked thread Pin
masnu14-Feb-06 4:31
masnu14-Feb-06 4:31 
QuestionUnicode to MBCS conversion Pin
meet2nishith14-Feb-06 3:12
meet2nishith14-Feb-06 3:12 
AnswerRe: Unicode to MBCS conversion Pin
Andy Moore14-Feb-06 3:39
Andy Moore14-Feb-06 3:39 
GeneralRe: Unicode to MBCS conversion Pin
Andy Moore14-Feb-06 4:15
Andy Moore14-Feb-06 4:15 
GeneralRe: Unicode to MBCS conversion Pin
Andy Moore14-Feb-06 4:16
Andy Moore14-Feb-06 4:16 
GeneralRe: Unicode to MBCS conversion Pin
meet2nishith14-Feb-06 19:17
meet2nishith14-Feb-06 19:17 
GeneralRe: Unicode to MBCS conversion Pin
ThatsAlok14-Feb-06 22:09
ThatsAlok14-Feb-06 22:09 
Questionmidi_mapper Pin
Waldermort14-Feb-06 2:54
Waldermort14-Feb-06 2:54 
AnswerRe: midi_mapper Pin
Ryan Binns14-Feb-06 17:32
Ryan Binns14-Feb-06 17:32 
QuestionBuilding a static library and linking the same in application Pin
subramanyeswari14-Feb-06 2:53
subramanyeswari14-Feb-06 2:53 
AnswerRe: Building a static library and linking the same in application Pin
Chris Losinger14-Feb-06 3:54
professionalChris Losinger14-Feb-06 3:54 
QuestionCan I embed java applet in the VC++ App Pin
RamL14-Feb-06 1:43
RamL14-Feb-06 1:43 
AnswerRe: Can I embed java applet in the VC++ App Pin
RamL14-Feb-06 1:48
RamL14-Feb-06 1:48 
Questionhow to add html page in SDI Pin
sourabh27231814-Feb-06 1:34
sourabh27231814-Feb-06 1:34 
AnswerRe: how to add html page in SDI Pin
Rage14-Feb-06 1:39
professionalRage14-Feb-06 1:39 
QuestionVisual Studio .NET question Pin
IlanTal14-Feb-06 1:26
IlanTal14-Feb-06 1:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.