MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
Public 成员函数 | Private 属性 | 所有成员列表
JavaThreadPoolThreadHandler类 参考

简单线程池模型。使用了模拟Java线程池接口的线程池,所以脚JavaThreadPool 更多...

#include <java_thread_pool_thread_handler.h>

类 JavaThreadPoolThreadHandler 继承关系图:
ThreadHandler

Public 成员函数

virtual RC start () override
 启动线程模型 更多...
 
virtual RC stop () override
 停止线程模型 更多...
 
virtual RC await_stop () override
 等待线程模型停止 更多...
 
virtual RC new_connection (Communicator *communicator) override
 有新的连接到达时,调用此接口 更多...
 
virtual RC close_connection (Communicator *communicator) override
 连接断开时,调用此接口。通常都是内部调用 更多...
 
void handle_event (EventCallbackAg *ag)
 使用libevent处理消息时,需要有一个回调函数,这里就相当于libevent的回调函数 更多...
 
void event_loop_thread ()
 libevent监听连接消息事件的回调函数 更多...
 
virtual RC start ()=0
 启动线程模型 更多...
 
virtual RC stop ()=0
 停止线程模型 更多...
 
virtual RC await_stop ()=0
 等待线程模型停止 更多...
 
virtual RC new_connection (Communicator *communicator)=0
 有新的连接到达时,调用此接口 更多...
 
virtual RC close_connection (Communicator *communicator)=0
 连接断开时,调用此接口。通常都是内部调用 更多...
 

Private 属性

mutex lock_
 
struct event_base * event_base_ = nullptr
 
common::ThreadPoolExecutor executor_
 libevent 的event_base
 
map< Communicator *, EventCallbackAg * > event_map_
 线程池
 
SqlTaskHandler sql_task_handler_
 每个连接与它关联的数据
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 ThreadHandler
static ThreadHandlercreate (const char *name)
 创建一个线程模型
 

详细描述

简单线程池模型。使用了模拟Java线程池接口的线程池,所以脚JavaThreadPool

使用线程池处理连接上的消息。使用libevent监听连接事件。 libevent 是一个常用并且高效的异步事件消息库,可以阅读手册了解更多。 libevent 手册

成员函数说明

◆ await_stop()

RC JavaThreadPoolThreadHandler::await_stop ( )
overridevirtual

等待线程模型停止

实现了 ThreadHandler.

◆ close_connection()

RC JavaThreadPoolThreadHandler::close_connection ( Communicator communicator)
overridevirtual

连接断开时,调用此接口。通常都是内部调用

参数
communicator与客户端通讯的对象

实现了 ThreadHandler.

◆ event_loop_thread()

void JavaThreadPoolThreadHandler::event_loop_thread ( )

libevent监听连接消息事件的回调函数

这个函数会长时间运行在线程中,并占用线程池中的一个线程

◆ handle_event()

void JavaThreadPoolThreadHandler::handle_event ( EventCallbackAg ag)

使用libevent处理消息时,需要有一个回调函数,这里就相当于libevent的回调函数

参数
ag处理消息回调时的参数,比如libevent的event、连接等

◆ new_connection()

RC JavaThreadPoolThreadHandler::new_connection ( Communicator communicator)
overridevirtual

有新的连接到达时,调用此接口

参数
communicator与客户端通讯的对象

创建一个libevent事件对象。其中EV_READ表示可读事件,就是客户端发消息时会触发事件。 EV_ET 表示边缘触发,有消息时只会触发一次,不会重复触发。这个标识在Linux平台上是支持的,但是有些平台不支持。 使用EV_ET边缘触发时需要注意一个问题,就是每次一定要把客户端发来的消息都读取完,直到read返回EAGAIN为止。 我们这里不使用边缘触发。 注意这里没有加 EV_PERSIST,表示事件触发后会自动从event_base中删除,需要自己再手动加上这个标识。这是有必 要的,因为客户端发出一个请求后,我们再返回客户端消息之前,不再希望接收新的消息。

实现了 ThreadHandler.

◆ start()

RC JavaThreadPoolThreadHandler::start ( )
overridevirtual

启动线程模型

实现了 ThreadHandler.

◆ stop()

RC JavaThreadPoolThreadHandler::stop ( )
overridevirtual

停止线程模型

实现了 ThreadHandler.


该类的文档由以下文件生成: