我目前需要写这样一个类如下
class ThreadPool : public CWinThread//使用了继承线程
//里面要实现三个线程,临介区就不多讲了
//1扫描线程根据情况执行线程1或线程2
UINT ThreadPool::ScanOrder(LPVOID LParam)
...
  while (ScanOpen){
    临介区1开始
    CWinThread SMSHandle=AfxBeginThread(&CreateLv1Thread,(long *)&OrderID);//问题一调用线程1出错,CreateLv1Thread这个线程地址怎样取.是不是要申明为静态
    临介区1结束
  }
}//2线程1
UINT ThreadPool::CreateLv1Thread(LPVOID lParam)
{...}
//3线程2
UINT ThreadPool::CreateLv2Thread(LPVOID lParam)
{...}

解决方案 »

  1.   

    上述申请静态是可以.但是还是有个问题.申请为静态.系统加载自动申请空间后.静态里面怎样使用类变量呢?都感觉有点矛盾.protected constructor used by dynamic creation是构造函数.那使用又怎样呢?
      

  2.   

    http://www.codeproject.com/threads/YuriThreadPool.asp
      

  3.   

    全局函数或类的静态成员方法。通过线程的参数(LPVOID?)来传递需要的信息。
    请参考ATL的CThreadPool
      

  4.   

    class ThreadPool : public CWinThread//使用了继承线程
    首先这就是个绝对糟糕的设计
      

  5.   

    ThreadPool不是Thread应该是ThreadManager~
      

  6.   

    www.codeproject.com/threads/win32threadpool.asp 
    www.codeguru.com/cpp/w-p/system/threading/article.php/c10977
    support.microsoft.com/kb/197728
      

  7.   

    www.sf.net上面有,可以在上面搜threadpool
      

  8.   

    最简单的就是做两个 CThread* 的数组就可以了
      

  9.   

    class ThreadPool : public CWinThread//这个从结构上来说没什么问题,ThreadPool有时候也需要一个自己的线程去管理其他线程,判断当前WorkerThread是否够用或者太多来创建/销毁线程。线程加载的时候你需要把class指针传递给线程参数,或者创建一个公用struct把你需要的参数全部集合在一起当作一个void *传递进去,然后在线程里面转换回来。
    数据传出来的方式会有很多种。
    可以不同的线程共同拥有一个struct的指针,访问的时候看情况加锁。这个方式我比较喜欢,因为视不同情况对数据加read或者write锁,效率是最高的。
    也可以建立一个消息机制,通过置位event和push pop来传递信息(类似windows消息机制或者直接采用windows消息机制)
      

  10.   

    ThreadPool有时候也需要一个自己的线程去管理其他线程
    =========那也不是理由用继承~
      

  11.   

    to楼上
    从代码重用性来说,继承的解决方案比较好
    如果说你非要为了把ThreadPool和Thread区分开而重新写一个专用线程类,并不能算错,但是从我的角度上来看目的性不够明确。我不喜欢为了代码而写代码,呵呵。
    但单从这贴本身来说,并不能说搂主的方式一定就是错的,对吗?
      

  12.   

    并不是为了代码而写代码~而是根本就不合理~按你的说法,只要是内部用到线程的系统,就该从线程派生~
    我会觉得很荒谬~
    我的意思并不是说还需要写一个线程类,而是就使用现有的线程类就行了
    因为ThreadPool的目的只是为了管理这些线程而已~
      

  13.   

    不好用对或错来恒量,因为就算lz这样设计结构,也是可以达到ThreadPool的目的的~从结果来说,他没有错~我只能说这样设计不合理~
      

  14.   

    单纯从C++的语法上来说,怎么写都没有错误.
    从面向对象的设计的角度来讲,如果必须使用继承才能解决问题,那就要使用继承.
    否则, 还是尽量少用继承. 因此,站在这个角度来讲,fantiyu_sr()的说法还是很有道理.
      

  15.   

    线程的封装技巧:把任意类的成员函数指针作为参数http://blog.csdn.net/ringphone/archive/2004/10/18/141074.aspx