Visual C++优化对大型数据集合的并发访问

http://tech.ddvip.com   2007年03月30日    社区交流

本文详细介绍Visual C++优化对大型数据集合的并发访问

Figure 4 Thread Class Definition

class Thread
{
public:
  Thread();
  virtual ~Thread();
  virtual void start();
  virtual bool wait(unsigned long timeout = INFINITE);
  unsigned long getId() const
    { return m_id; }
  HANDLE getHandle() const
    { return m_h; }
protected:
  virtual void run() = 0;
private:
  static unsigned __stdcall entryPoint(void* pArg);
  unsigned long  m_id;
  HANDLE     m_h;
};

  图 4

  与前面的构造块类不同,要向您解释清楚 Thread 类有一点儿困难(参见图 4)。对于那些了解 Java 的读者而言,它非常像 Java Thread 类,不同之处在于它不支持单独的 Run 接口 — 它要求直接从 Thread 派生。

  对于那些不熟悉 Java 的线程机制的读者而言,以下是您使用 Thread 类的方法。首先,从 Thread 派生一个类(假设为 MyThread),然后重写纯虚拟方法 run。在该方法中放入您希望新线程执行的代码。然后,构建一个 MyThread 类型的对象,并调用 start。此时,新的线程将开始在您的 run 方法中执行。如果您希望另一个线程等待至 MyThread 线程退出,请调用 wait。(当然,您绝不能从 run 方法内部调用 wait 方法。)

  以这种方式对线程进行建模的优点之一是:它使得与线程的通讯变得容易多了。要将信息传递给线程,您需要做的全部事情就是将这些信息存储在您的 MyThread 类的数据成员中。我通常在构造函数中完成这一工作。要向您的线程外部传递信息,只须完成相反的工作 — 在您的 run 方法中,将信息存储在您的 MyThread 类的数据成员中,然后实现 getter 方法以使其他线程可以获取该数据。

作者:Ian Emmons    责编:豆豆技术应用

正在加载评论...