如果在VC++中要创建多个线程,加入创建2个,是不是写一个AfxBeginThread,然后复制一下,还是写一个AfxBeginThread,后面写两个线程的名字呢,请高手指点一下!!
谢谢!!

解决方案 »

  1.   

    直接CreateThread,再sleep,重复两次即可。
      

  2.   

    可是我用的是AfxBeginThread,不想变,这样怎么创建两个线程呢
      

  3.   

    直接用CreateThread吧,如果是同一个线程函数,创建2个线程,那么就用2楼的,如果是不同的线程函数,那就必需:::CreateThread(...);
    ::CreateThread(...);
    ..............
    来创建每一个线程了。随便找点多线程编程的资料看看吧,这个问题不是一两句话讲完的。
      

  4.   

    方法是一样的,只不过创建函数不同而已,afxbeginthread内部使用的还是CreateThead,可以看看他的源代码就清楚了。
      

  5.   

    CWinThread * mTrdDown2 = NULL;
    mTrdDown2 = AfxBeginThread()
    API中有许多函数,关于线程也很多,看了一些资料头晕晕的,可是还是不知道怎么创建多个线程,我这里有一个大的程序,他里面是应该有多线程的,程序里面只有AfxBeginThread,但是我看不出来他是怎么创建两个线程的,例如上面两条语句又涉及到CWinThread ,不知道是什么意思,又是初学,所以还是直接告诉我该怎么用AfxBeginThread创建两个线程吧,说说框架或者流程就行,鉴于本人初学,大家请体谅!在此小妹谢谢大家了!!
      

  6.   

    如果你要创建的线程完成的功能一样的话,完全可以用循环创建例如:
    for(int i = 0; i < 10; i ++)
    {
        AfxBeginThread(...);
    }
    这样就可以创建10个线程了,你可以保存返回的句柄(CreateThread)或指针(AfxBeginThread),然后可以在以后对线程进行操作。
      

  7.   

    莫非楼主的意思是通过一次AfxBeginThread()来完成创建两个线程 ???
    这个比较先进  我是不懂的了   
      

  8.   

    我的意思是怎么样创建两个线程,如果创建两个线程就是用两个AfxBeginThread()吗?还是怎么样?不是很清楚,请指教!!
      

  9.   

    如果是两个线程,并且两个线程函数不同的功能,那么就是如下了:
    AfxBeginThread(...); // 第一个线程
    AfxBeginThread(...); // 第二个线程
    需要创建多少个线程,就在需要的地方调用这个AfxBeginThread(...)
      

  10.   

    哎,楼主多看看线程的基本知识吧
    CWinThread * mTrdDown2 = NULL;
    mTrdDown2 = AfxBeginThread()
     是句柄啊,你想创建多个,那就多几个这样子的语句啊
    AfxBeginThread()里边是你的线程函数,如果线程函数不是同一个,那两个线程就没有什么关系了,如果涉及到对同一资源的操作,那么就需要线程同步之类的啊,例如利用事件对象同步等。用MFC是吧,都可以啊建议多看看书,好多资料啊,别看多了,某一本书上的搞懂就是了
      

  11.   

    CWinThread* AfxBeginThread(
       AFX_THREADPROC pfnThreadProc,
       LPVOID pParam,
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );
    这里只有第一个参数是线程函数地址,你要创建什么线程自然就要就调用一次这个函数;
    难不成你真的想调用一次就创建了两个线程???????
    不知道你想要做什么。
    当然,第一个参数是地址,不知道可不可以传递一个结构体指针进去,结构体里面有多个线程地址(麻烦?画蛇添足?)。
    高手来讲解下。
      

  12.   

    如果你用的是纯粹的API,你可以放心的用CreateThread
    如果你用VC的C++标准库,你最好使用_beginthread
    如果你用了MFC,你最好使用AfxBeginThread我觉得你的问题已经得到回答了
    就是调用两次
    AfxBeginThread
    你可以通过这个函数返回的指针对这些线程进行一些控制
      

  13.   

    handle1=AfxBeginThread((AFX_THREADPROC)ThreadFunc1,...);
    handle2=AfxBeginThread((AFX_THREADPROC)ThreadFunc2,...);DWORD WINAPI ThreadFunc1(LPVOID lpParam)
    {
    //线程1处理工作
    }DWORD WINAPI ThreadFunc2LPVOID lpParam)
    {
    //线程2处理工作
    }看样子你是MFC,所以线程函数得是static的