| Xlight API用户手册 v1.5.1.2 Xlight极速柜台接口文档

载入中...
搜索中...
未找到
线程模型

本文档介绍xlt_api的线程架构。

# 用户线程

用户线程需要负责处理：

- API初始化和配置
- 登录/登出请求
- 交易请求（报单、撤单）
- 查询请求（资金、持仓、订单、成交查询）

注意：交易请求会在用户线程直接发送报单消息，报单如需绑核需要用户自行对调用`insert_order()`方法的用户线程进行绑核

# 回调线程

回调函数在独立的线程中执行，包括：

- 交易回报回调线程：执行 x1::XLTTradeSpi 的回报回调函数
- 交易查询回调线程：执行 x1::XLTTradeSpi 的查询结果回调函数
- 行情回调线程：接收行情以及执行 x1::XLTQuoteSpi 或 x1::EFHQuoteSpi 的回调函数，详见行情接收线程

注意

- 回调函数需要快速返回，避免阻塞回调线程。如果回调函数执行时间较长，建议将数据放入队列，在另一个线程中处理。

# 行情线程

行情接收线程根据配置模式不同而不同：

## 单线程模式

单线程模式指两个市场的Level2行情分别在单个线程接收，若全部打开会有以下三个线程：

- Level1行情接收线程：接收上交所和深交所Level1行情
- 上海Level2行情接收线程：接收上海Level2所有类型行情
- 深圳Level2行情接收线程：接收深圳Level2所有类型行情

配置接口XLTApiConfig::receive_quote_in_single_thread()

using namespace x1;
XLTApiConfig config;
// 将行情接收线程绑定到独立的CPU核心
config.receive_quote_in_single_thread(
{true, -1}, // Level1快照，不绑核
{true, 3}, // 上海Level2，绑定到CPU 2
{true, 4} // 深圳Level2，绑定到CPU 4
);
x1::XLTApiConfig
API配置类 此类用于配置XLT API的各项参数，如日志路径、日志级别、交易日、网卡地址、网关地址、行情接收配置等。 用户需要在调用XLTApi::initialize方法前，创建此类实例，并设置相应...
定义 xlt_api_config.h:49
x1::XLTApiConfig::receive_quote_in_single_thread
void receive_quote_in_single_thread(quote_receive_cfg_t l1, quote_receive_cfg_t sse_l2, quote_receive_cfg_t szse_l2)
配置行情接收，单线程模式

## 快照和逐笔独立线程模式

快照和逐笔独立线程模式指两个市场的Level2行情分别在快照和逐笔两个线程接收，若全部打开会有以下五个线程：

- Level1快照接收线程：接收上交所和深交所Level1快照行情
- 上海Level2快照接收线程：接收上海Level2快照行情
- 上海Level2逐笔接收线程：接收上海Level2逐笔行情
- 深圳Level2快照接收线程：接收深圳Level2快照行情
- 深圳Level2逐笔接收线程：接收深圳Level2逐笔行情

配置接口XLTApiConfig::receive_quote_in_snap_tick_thread()

using namespace x1;
XLTApiConfig config;
// 将行情接收线程绑定到独立的CPU核心
config.receive_quote_in_snap_tick_thread(
{true, -1}, // Level1快照，不绑核
{true, 2}, // 上海Level2快照，绑定到CPU 2
{true, 3}, // 上海Level2逐笔，绑定到CPU 3
{true, 4}, // 深圳Level2快照，绑定到CPU 4
{true, 5} // 深圳Level2逐笔，绑定到CPU 5
);
x1::XLTApiConfig::receive_quote_in_snap_tick_thread
void receive_quote_in_snap_tick_thread(quote_receive_cfg_t l1, quote_receive_cfg_t sse_l2_snap, quote_receive_cfg_t sse_l2_tick, quote_receive_cfg_t szse_l2_snap, quote_receive_cfg_t szse_l2_tick)
配置行情接收，快照和逐笔独立线程模式

## 按行情类型独立线程模式

按行情类型独立线程模式指两个市场的Level2各类行情分别独立线程接收，若全部打开会有以下十一个线程：

每种行情类型在独立线程中接收：

- Level1行情接收线程
- 上海Level2竞价快照接收线程
- 上海Level2竞价逐笔接收线程
- 上海Level2指数接收线程
- 上海Level2债券快照接收线程
- 上海Level2债券逐笔接收线程
- 深圳Level2竞价快照接收线程
- 深圳Level2竞价逐笔接收线程
- 深圳Level2指数接收线程
- 深圳Level2债券快照接收线程
- 深圳Level2债券逐笔接收线程

配置接口XLTApiConfig::receive_quote_in_channel_per_thread()

using namespace x1;
XLTApiConfig config;
// 将行情接收线程绑定到独立的CPU核心
config.receive_quote_in_channel_per_thread(
{true, -1}, // Level1快照，不绑核
{
{true, 2}, // 上海Level2竞价快照，绑定到CPU 2
{true, 3}, // 上海Level2竞价逐笔，绑定到CPU 3
{true, 4}, // 上海Level2指数，绑定到CPU 4
{true, 5}, // 上海Level2债券快照，绑定到CPU 5
{true, 6} // 上海Level2债券逐笔，绑定到CPU 6
},
{
{true, 7}, // 深圳Level2竞价快照，绑定到CPU 7
{true, 8}, // 深圳Level2竞价逐笔，绑定到CPU 8
{true, 9}, // 深圳Level2指数，绑定到CPU 9
{true, 10}, // 深圳Level2债券快照，绑定到CPU 10
{true, 11} // 深圳Level2债券逐笔，绑定到CPU 11
}
);
x1::XLTApiConfig::receive_quote_in_channel_per_thread
void receive_quote_in_channel_per_thread(quote_receive_cfg_t l1, quote_l2_receive_cfg_t sse_l2, quote_l2_receive_cfg_t szse_l2)
配置行情接收，按行情类型独立线程模式

# 线程安全

- API接口调用是线程安全的，可以在多个线程中调用
- 回调函数在独立线程中执行，需要注意线程安全
- 建议在回调函数中使用锁或其他同步机制保护共享数据