c语言sscanf函数的用法是什么
269
2022-11-08
Ceph代码分析---线程池
对于计算密集型的业务通常使用线程池进行多线程并发处理,线程池在一定程度上可以有效的提高CPU的利用率,降低无用消耗。Ceph中实现了两种类型的线程池类(本质相同),并实现消息队列处理类。其中线程池类负责具体线程创建,维护和销毁。消息队列处理类则负责队列的管理,包括入队,出队等,消息队列类为一个模板类,保证其处理数据类型的通用性。 如图1所示为ThreadPool线程池类,该类中定义的成员变量_threads用于保持创建的线程,work_queues变量则保存了由该线程池中线程处理的消息队列。 线程池创建后可以创建指定数量(以参数而定)的线程,而线程会调用其工作函数进行具体的工作。在ThreadPool线程池中,线程的工作函数会调用线程池的worker成员函数进行具体的工作。 线程池的worker成员函数会遍历work_queues,从其中找出每一个消息队列实例,并调用该实例的函数遍历其中保存的消息,并进行消息的具体处理工作。 线程池可以对多种类型的消息队列进行处理,其实现方式是利用了面向对象多态的特性。线程池成员work_queues本身是一个消息队列超类,而具体使用时的消息队列都有各自的实现。 另外,为了保证消息队列的灵活性,消息队列超类的入队,出队和处理函数都实现为虚函数,保证具体的处理动作可以由子类实现。后续博文可以看到Ceph如何继承相应消息队列类,并进行具体工作的。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~