我想问问主线程与子线程的关系. 
比如一个程序,a为主线程,从a中生成子线程b1,b2,从b1中生成子线程c1,c2. 
1,此时,如果父线程b1运行完毕,子线程c1仍在运行,此时c1会否因为b1的消灭而被迫消灭,还是c1会继续运行? 
2,如果主线程a消灭,是否b1,b2,c1,c2也会强迫被消灭? 
3,主线程a是否是进程中第一个创建的线程同时也是最后一个消灭的线程?

解决方案 »

  1.   

    只有main函数或者相同函数的那个线程才是主线程,其他的线程一视同仁,全是子线程。
    个人意见
      

  2.   

    问题1,如果c1仍在运行,父线程b1是不可能运行完毕的问题2,主线程a消灭,其子线程全over,皮之不存,毛将焉附问题3,是的
      

  3.   

    1. 主线程结束,其他线程也会结束
    2. 子线程退出不会影响主线程(做特殊处理的除外)
    3. 运行main(wMain,WinMain等)的线程为主线程,其他线程均为子线程
      

  4.   

    那要看你的主线程是怎么结束的,比如下面的代码,主线程结束了,子线程还在运行,进程还没有结束
    #include <windows.h>
    #include <iostream>
    #include <process.h>
    using namespace std;unsigned __stdcall ThreadProc(LPVOID)
    {
    while(TRUE)
    {
    cout<<"thread is running"<<endl;
    Sleep(2000);
    }

    return 0;
    }int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    { HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, &ThreadProc, NULL, 0, NULL);
    CloseHandle(hThread); ExitThread(0);
    // .... 后面的代码不会执行
    return 0;
    }
      

  5.   

    如果是自己return返回的,那么他所有的子线程也就结束了,从而没有线程在进程的地址空间中运行,进程就没有继续存在的理由了,操作系统就结束进程,进程退出
      

  6.   


    同意
         
         如果一个线程a只是生成另一个线程b,而不管其死活,那么a被灭,b一样在
         但是如果主线程(进程)被干掉了 ,其它也就都没了
         以上个人看法,
      

  7.   

    1,b1被消灭了c1仍然会继续运行,因为b1与c1同属于子线程等级的.这个已经验证过很多次了.
    2,主线程就是与进程直接关联的那个线程,如果主线程结束了,进程都没了其他的当然会结束.
    3,是