DSS初始化详解:Linux上安装nvm, node, npm, pm2
需积分: 10 39 浏览量
更新于2024-08-10
收藏 770KB PDF 举报
"这篇文档详细解析了Darwin Stream Server (DSS) 在Linux环境下的启动初始化流程,包括安装nvm、node、npm和pm2等工具。DSS启动过程涉及多个核心组件的初始化,以及线程和任务管理。"
在Darwin Stream Server (DSS)的启动和初始化流程中,主要分为以下几个关键步骤:
1. **DSS启动服务**:在`Server.tproj/main.cpp`中,DSS通过`fork`子进程后调用`StartServer`启动服务。在这个过程中,它会调用一系列类的`Initialize`函数,如`OS`、`OSThread`、`Socket`、`SocketUtils`、`QTSSDictionaryMap`、`QTSServerInterface`和`QTSServer`等,对系统的基本功能进行初始化。
2. **事件队列初始化**:`select_startevents`函数初始化了基于`select()`的事件队列实现,这是处理I/O复用的关键部分,使得DSS能够高效地监听多个套接字。
3. **QTSServer::Initialize**:进一步调用`QTSSModule`、`QTSServerPres`、`QTSSMessages`等类的`Initialize`函数,初始化字典,并加载第一个模块`QTSSErrorLogModule`。同时,设置默认IP地址和DNS名称,并开启监听,但传入`false`参数表示不立即启动监听。
4. **线程池创建与扩展**:`TaskThreadPool::AddThreads`用于创建并运行第一个线程,将其添加到线程池。在`startBroadcastRTSPSession`函数中,又会根据需要在线程池中增加额外的线程。
5. **全局任务初始化**:`TimeoutTask::Initialize`启动服务器的全局任务并开始监听。`TimeoutTaskThread`是一个基于Task的任务类,而不是线程类。当信号发出时,线程池中的线程会处理该任务。
6. **空闲任务线程启动**:`IdleTask::Initialize`创建并启动空闲任务线程,用于处理系统在无任务执行时的状况。
7. **Socket事件线程启动**:`Socket::StartThread`启动Socket类的`sEventThread`线程,这是第三个启动的线程,至此,已启动了任务线程、空闲任务线程和事务线程。
整个启动流程涉及到多线程的管理和任务调度,确保DSS能有效地处理网络请求和流媒体服务。此外,安装nvm(Node Version Manager)、node.js、npm(Node Package Manager)和pm2则是为了在Linux环境中管理和运行Node.js应用,提供便利的开发和生产环境支持。NVM允许用户安装和切换不同版本的Node.js,npm则负责管理Node.js的依赖包,而pm2是一个生产级别的Node.js应用的进程管理器,能保证应用的稳定运行和负载均衡。
2021-05-18 上传
2018-08-14 上传
2021-10-21 上传
点击了解资源详情
2020-03-07 上传
2021-05-23 上传
2021-02-25 上传
2021-07-18 上传
2020-10-20 上传
吴雄辉
- 粉丝: 49
- 资源: 3743
最新资源
- amazing-graph
- jQuery等高排列插件matchHeight
- homework06
- 计算机科学工程:在米兰理工大学攻读工程学,计算机科学工程学士学位和硕士学位,所有课程及其材料的集合
- Snow:php包将json内容从Editor.js转换为html元素
- BoardgameInventorySystem:个人项目,使用Java为棋盘游戏收藏创建库存系统
- 天气仪表板
- 小黄帽flash动画儿歌
- 关于JSP网上订餐系统本科论文有源码MSQ、JSP
- php程序设计课程大作业——基于PHP、MySQL的web端借还书系统.zip
- blog.cms
- variable Size & Position-crx插件
- roundcube_syncmarks:在Roundcube中显示Firefox书签
- jsroot:JavaScript 根
- r8152-2.14.0
- Advanced Simulation Library:免费的多物理场仿真软件包-开源