ACE,Python和Java(我所知道的)中要获得多线程的能力,都是通过从一个线程对象基类继承,重载特定的成员函数来实现。简单的来看,它用起 来也相当简单,理解起来也不复杂,但,用过一段时间之后,就会发现处理复杂问题时,你会遇到许多的限制。
1.必须从一个线程对象基类继承吗?
现在看来是的,否则,你只有使用系统OS提供的线程函数了。
2.我已经有个类了,它不是从线程对象基类继承的,我要使用多继承吗?
是的,除非重写。
3.我有一个函数,想让他在另一个线程执行,一定要写个类吗?
是的。
4.我有一个类,它的每个成员函数我都想他们在另外的线程中执行,怎么办?
线程对象基类只有一个线程函数,你必须通过某种通讯机制去让它执行不同的成员函数。
4.当线程在执行一个对象的某个成员时,这个对象被删除了怎么办?
没办法,你必须自己管理对象的生存期。
呜呼!问题越来越多,该怎么办?我们需要某种透明的线程模型,他能处理任意的需要被异步执行的类的成员函数或者普通函数,它能提供一种策略,使得我们能 自动管理处理不同线程中的对象的生存期。我们现在有了这种工具了吗?
熟悉Boost的人可能觉得boost.thread也许提供了这种能力。很不幸,它满足了一部分上述需求。
正在实现上述需求的一个线程模型。它将任务与任务的执行者分离,它支持人任何的任务,不论它是普通的函数,还是具有任意参数的成员函数,你均能将它作为 一个任务抛到其他的线程执行,它是非侵入式,通过它所支持的生命期管理,你不用在担心对象在异步执行时被销毁。它用模板实现。