Xlight API用户手册 v1.5.1.2
Xlight极速柜台接口文档
载入中...
搜索中...
未找到
线程模型

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

用户线程

用户线程需要负责处理:

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

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

回调线程

回调函数在独立的线程中执行,包括:

注意

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

行情线程

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

单线程模式

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

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

配置接口XLTApiConfig::receive_quote_in_single_thread()

using namespace x1;
XLTApiConfig config;
// 将行情接收线程绑定到独立的CPU核心
{true, -1}, // Level1快照,不绑核
{true, 3}, // 上海Level2,绑定到CPU 2
{true, 4} // 深圳Level2,绑定到CPU 4
);
API配置类 此类用于配置XLT API的各项参数,如日志路径、日志级别、交易日、网卡地址、网关地址、行情接收配置等。 用户需要在调用XLTApi::initialize方法前,创建此类实例,并设置相应...
定义 xlt_api_config.h:49
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核心
{true, -1}, // Level1快照,不绑核
{true, 2}, // 上海Level2快照,绑定到CPU 2
{true, 3}, // 上海Level2逐笔,绑定到CPU 3
{true, 4}, // 深圳Level2快照,绑定到CPU 4
{true, 5} // 深圳Level2逐笔,绑定到CPU 5
);
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核心
{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
}
);
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接口调用是线程安全的,可以在多个线程中调用
  • 回调函数在独立线程中执行,需要注意线程安全
  • 建议在回调函数中使用锁或其他同步机制保护共享数据