子线程能杀死主线程吗?
程序代码:
#include "u_def.h" #include <windows.h> #include <stdio.h> #include "u_task.h" HANDLE g_handle; HANDLE test_entry_func(char *name) { int num = 5; printf("%s\n", name); Sleep(1000); while(num--) // 保证子线程不退出 { printf("%s, %d\n", __FILE__, __LINE__); Sleep(500); } TASK_KillThread(g_handle); // 不能杀死主线程 ?? Sleep(500); return NULL; } int main(int argc, char **argv) { UINT32 ret; ret = TASK_CreateThread(NULL, NULL, test_entry_func, "zhong"); ret += 100; printf("sakdja %d\n", ret); // 偶然被重复打印 g_handle = GetCurrentThread(); //TASK_KillThread(g_handle); // 能杀死自己 SuspendThread(g_handle); //Sleep(16000); // 等等子线程启动 return 0; }测试发现 HANDLE test_entry_func(char *name)程序中的 TASK_KillThread(g_handle); 不能将主线程杀死,也就是程序一直不会退出
而主函数 int main(int argc, char **argv)中的 SuspendThread(g_handle);能把自己杀死,主线程不会进到Suspend状态!
这能否说明子线程不能杀死主线程?