您的位置:首页 > 编程语言

关于强制退出线程操作的代码

2009-12-02 15:48 113 查看
大家在多线程编程的时候,需要在程序退出之前,退出一些特定的后台线程。下面的代码可以完美解决此类问题。

#include <windows.h>

#include "stdio.h"

HANDLE hCheckThread, hCheckEvent;

unsigned long __stdcall HeatBeatUpdateThread(void * argList)

{

int end =0, i = 0;

end = GetTickCount();

while (WaitForSingleObject(hCheckEvent, 1000000) != WAIT_OBJECT_0)

{

printf("count:%d, duration:%d/n", i, GetTickCount() - end);

i++;

end = GetTickCount();

}

printf("exit thread");

return 0;

}

unsigned long BackgroundThreadCreate()

{

unsigned long ThreadId = 0;

// Create a manual-reset nonsignaled unnamed event

hCheckEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

hCheckThread = CreateThread(NULL, 0, HeatBeatUpdateThread, NULL, 0, &ThreadId);

return 0;

}

void main()

{

int begin, end;

BackgroundThreadCreate();

Sleep(300);

// Killed the check thread

SetEvent(hCheckEvent); // signal thread to end

begin = GetTickCount();

// Wait max. 10 seconds for the firmware thread to terminate - if not, force a terminate

if(WAIT_OBJECT_0 != WaitForSingleObject(hCheckThread,10000))

{

TerminateThread(hCheckThread,0);

}

end = GetTickCount() - begin;

CloseHandle(hCheckEvent);

CloseHandle(hCheckThread);

while (1)

{

Sleep(10000000);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: