有2个线程A和B,他们都是派生于CWindThread:在A线程里创建B线程,这时想把一些初始化的数据传递给B线程,好让B线程在InitInstance函数里初始化一些变量,要怎么做??(我可以想到全局变量,但是数据多了,就要很多全局变量,好像不太好.用传递消息也不行,因为B在InitInstance函数里就要用数据了)

解决方案 »

  1.   

    大致如楼上, 为所以的数据构建成一个对象, 但不用全局的变量,
    在启动线程时直接传入:
    AfxBeginThread( AFX_THREADPROC pfnThreadProc,
      LPVOID pParam)通过pParam
      

  2.   

    把数据封装为类,然后在B类添加一个构造函数,把该数据类作为参数在A中创建B是,构建B对象,传入数据对象
      

  3.   

    在CWindThread派生类中定义public成员,创建线程时指定CREATE_SUSPENDED标志,然后给public成员赋值,再ResumeThread。
      

  4.   

    to 2楼的,我用的线程是派生于CWindThread的,不是工作者线程,没有线程函数,所以没有LPVOID pParam
      

  5.   

    线程之间也只有那个lpParam可以传递参数。该传的都打包,直接从这传进去吧
      

  6.   

    up
    lpParam可以指定自定义类或结构