http://blog.csdn.net/moxiaomomo/article/details/6732387
在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函数之前终止。这意味着,它们的生命期比主线程的生命期短,因为分离的线程不能再汇合。