- 论坛徽章:
- 0
|
本帖最后由 egametang 于 2011-11-11 18:03 编辑
C的使用者连指针(函数指针也是指针)都驾驭不了的话,还用什么C?难道这世上不存在自身“错误”地使用 ...
w_anthony 发表于 2011-11-11 17:53
class ThreadPool: private boost::noncopyable
{
private:
int threadNum;
boost::detail::atomic_count workNum;
volatile bool running;
boost::mutex mutex;
boost::condition_variable cond;
boost::condition_variable done;
std::list<ThreadPtr> threads;
std::list<boost::function<void (void)> > tasks;
void Runner();
public:
ThreadPool(int num = 0);
virtual ~ThreadPool();
virtual void Wait();
virtual bool Schedule(boost::function<void (void)> task);
};
一个线程池类
怎么使用呢?
void Max(int a, int b, int* z)
{
*z = a > b? a : b;
}
thread_pool.Schedule(boost::bind(&Max, x, y, &z));
简简单单一句话,把一个任务扔到了线程池里面,并且是类型安全的哦
我这里Schedule参数就是函数指针哦
C语言用指针,传参是void的,结果还得类型转换,你说麻不麻烦? |
|