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

本文介绍交易API的线程模型。理解线程模型有助于正确使用API接口、避免死锁和数据竞争。

线程概览

交易API运行时涉及以下线程:

交易API线程模型

线程 说明
用户线程(可多个) 用户自己的业务线程,通常在此调用API请求接口向柜台发送上行请求
登录及查询回调线程 API内部线程,接收柜台下行消息,触发登录响应、查询响应等回调
消息推送线程 API内部线程,接收柜台下行消息,触发订阅后的交易消息推送回调(回报、订单簿变动等)
超时通知线程 API内部线程,请求超时、委托超时没有收到任何回报时触发相应登录响应、查询响应、委托超时等回调

用户线程

用户线程是用户自己创建的业务线程,可以有多个。API的请求接口可以在任意线程中调用(包括用户线程和回调线程),常用接口如下:

下单/撤单性能建议:

登录及查询回调线程

此线程由API内部管理,负责触发以下回调:

注意事项:

  • 回调函数需要尽快返回,长时间阻塞会导致后续消息堆积,严重时可能触发断线。

消息推送线程

此线程由API内部管理,负责触发订阅后的交易消息推送回调,包括:

委托回报消息(REPORT):

原始报文消息(RAW_REPORT):

订单簿消息(ORDER_BOOK):

资金划拨消息(任意订阅类型均会推送):

注意事项:

  • 推送回调需要尽快返回,否则会阻塞后续消息推送,严重时可能触发断线。
  • 推送回调与登录/查询回调运行在不同线程中,用户在回调实现中访问共享数据时需要注意线程安全。

线程安全总结

场景 建议
API请求接口的调用线程 可在任意线程中调用(用户线程或回调线程均可)
下单/撤单性能优化 建议调用线程进行绑核,线程中首次调用前调用 x1::XLTTradeApi::init_local_send
在回调中访问共享数据 推送回调与登录/查询回调运行在不同线程中,访问共享数据时需加锁保护或使用无锁结构