在srslte中,代码的运行机制主要采用线程池,多队列,时间序列等方式来运作的。他们之间相互配合协调运作各个功能。在进入整个程序之前,笔者先简单的说一下线程池的基本原理,线程池实际上主要有两个部分的线程来维护,一个是工作者线程,另一个是任务者线程。他们共同维护一个任务队列,任务者线程往任务队列里面加任务,工作者线程就从任务队列里边取任务然后运行。整个运作的过程非常的庞大,其中维护了许多的队列,笔者目前也还没有完全弄明白多队列与线程池之间的运作关系。今天主要分享一下笔者近期学习srsLTE源码所得的一些内容。后面在学习的过程中还会继续分享,欢迎同行者一起交流。

首先,在enb端,程序的初始化过程是在 main.cc函数里边

从这里开始,初始化了各个层级,每个层级的初始化相互独立的,这也说明的了,各个层之间是一种并行运行的机制。笔者主要负责协议栈部分的内容,所以从协议栈初始化开始。

在这个函数里面也主要是对协议栈的各个层进行了初始化,包括,RRC,PDCP,RLC,MAC层。同时也开启了一个线程来运行任务。

这个在start函数里边创建了一个运行run_thread函数的线程,他是一个多态实现。start函数实际上是enb_stack_lte这个类继承了thread类而得来,在start函数里边嵌套了几层,最终追踪到他创建线程的地方为 这个线程的函数是之前start传进去的参数:thread_function_entry

这里运行的run_thread在thread类里边是个虚函数,也就是说哪个类里边运行这个start函数,就会运行那个类里边重新定义的run_thread,这里是enb_stack_lte里边运行的start函数,因此他运行的是enb_stack_lte类里边的run_thread:

这个里边运行的就是所有未处理的任务,也就是说,初始化协议栈后,协议栈就会开始处理任务队列里边还未处理的任务,如果任务队列里边没有任务,他就会等待。

srsLTE源码分析(一)---enb协议栈入口相关推荐

  1. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析

    转载自   Spring Boot 2.x 启动全过程源码分析(上)入口类剖析 Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boo ...

  2. php3源码分析,ThinkPHP3.1.3源码分析(一) 入口文件分析

    前言: 有几个月时间没有更新CSDN博客,持之以恒的徽章也灭了,接下来这个几个月会 逐渐更新 主流PHP框架的入门,源码分析,框架对比.加油! 一.示例代码 //文件路径 ThinkPHP/Think ...

  3. thinkphp源码分析(二)—入口篇

    源码分析---入口篇 源码分析 应用入口 用户发起的请求都会经过应用的入口文件,通常是 ==public/index.php==文件.当然,你也可以更改或者增加新的入口文件. 通常入口文件的代码都比较 ...

  4. jQuery 源码分析第一篇之入口源码

    目前阅读的是jQuery 1.11.3的源码,有参考nuysoft的资料.原来比较喜欢在自己的Evernote上做学习基类,并没有在网上写技术博客的习惯,现在开始学习JS的开源代码,想跟大家多交流,希 ...

  5. srsLTE 源码分析 UE_04 PLMN选择之小区搜索

    小区搜索代码流程 PLMN选择LTE的第一个流程,但是由于PLMN涉及的代码量较大,放在一篇文章中,内容过多,因此,这一篇主要先针对小区搜索的流程进行代码梳理.小区搜索主要是PSS.SSS.MIB的解 ...

  6. srsLTE 源码分析 UE_09 随机接入 之PRACH发送

    前言 前一篇文章介绍SIB2相关的内容,PRACH必须要再SIB2之后再进行发送,原因是PRACH相关参数是在SIB2携带.这一篇文章将详细介绍下,PRACH的发送过程,这个过程在代码的流程有些长,如 ...

  7. nova创建虚拟机源码分析系列之六 api入口create方法

    openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用. 该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列 ...

  8. srsLTE 源码分析 UE_08 随机接入 之开启前的准备

    前言 通过前面的文章,读者应该对PLMN的搜索和选择有了一定的了解,接下来的几篇文章,我们会对随机接入的代码和流程进行分析.随机接入是MAC层的一项重要的任务,主要目的是实现UE和基站的上行同步,它从 ...

  9. srsLTE 源码分析 UE_05 PLMN选择之小区选择

    前言 在上一篇文章中,介绍了小区搜索的代码流程,从ue.switch_on()流程开始,最终是如何让物理层去搜索PSS.SSS以及MIB信息.这一章节,我们接着分析下小区选择的代码.这里的小区选择指的 ...

最新文章

  1. 硅谷理发460!奥巴马前手下发明AI理发机器人,10分钟理发,只收15%费用
  2. 安卓 python termux_Android Termux 安装 Linux 就是这么简单
  3. ASP.NET内置对象一
  4. 共识协议(6)PBFT详细步骤
  5. PyTorch随笔-0
  6. Redis数据分布一致性哈希
  7. python控制台动画_Python真神奇,带你体验另类的“全自动编程”
  8. Start Instance 操作详解 - 每天5分钟玩转 OpenStack(31)
  9. Exchange Server 2016管理系列课件50.DAG管理之激活数据库副本
  10. 扔掉老破V100、A100,英伟达新一代计算卡H100来了!
  11. 小白怎么学习云计算?2020云计算学习大纲
  12. 思科ccnp网络工程师必看SDh工作原理
  13. python对经济统计学有什么用_经济统计学是一个怎样的学科?就业方向主要是什么?...
  14. 使用sort(function(a,b){return a-b})对数组进行排序的原理
  15. pr cpu100%_PR插件NewBlueFX Titler Pro6.0安装教程
  16. 优化 RTD 温度传感系统:接线配置
  17. 计算机毕业设计Java电影售票系统(源码+系统+mysql数据库+lw文档)
  18. 联通(上海)产互一面
  19. 华为人报:实事求是科研方向与20年艰苦努力
  20. 如何用matlab画负倒函数曲线,负倒描述函数

热门文章

  1. 投资人为什么盯上了这些“小巨人”?
  2. 如何让3ds Max 2016导入smd文件
  3. 张无忌当年究竟对她做了什么?走进爱恨情仇,探究他与她之间的瓜葛!
  4. 力扣-两数之和 (梦开始的地方)
  5. 白盒测试中的逻辑覆盖法
  6. 90%的 CTO 都做不好绩效管理
  7. 全家都是博士是一种什么样的体验?
  8. 一男老师每日百词转载+连载(1)
  9. C语言编写实现玫瑰花
  10. SSTI 模板注入url_for和get_flashed_messages之[WesternCTF2018]shrine