`
mmdev
  • 浏览: 12933512 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Ice读书笔记--- TreadControl类的join与detach方法

 
阅读更多

在Ice中创建线程很简单,假设有一个名为ReaderThread的线程类,则可以这样创建线程:

class ReaderThread : public IceUtil::Thread {
virtual void run() {

//..... //实现run方法
}
};

IceUtil::ThreadPtr t = new ReaderThread;

t->start();

不过这样并不能让线程正常跑起来,必须经过下面的步骤(使用join或者detach):

join:这个方法挂起发出调用的线程,直到join所针对的线程终止为止。例如:

IceUtil::ThreadPtr t = new ReaderThread; //创建一个线程

IceUtil::ThreadControl tc =t->start(); //启动线程

tc.join();//等待线程终止

值得注意的是,只能在一个线程中调用另一个线程的join方法,就是说只有一个线程能够等待另一个现成的终止。


detach:这个方法分离一个线程。一旦线程分离,就不能再让它会合。值得注意的是,如果分离了一个线程,必须保证这个线程在程序离开main函数之前终止。这意味着,它们的生命期比主线程的生命期短,因为分离的线程不能再汇合。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics