pid 控制
static std::map<pid_t, TTask *> Tasks;
TError TTask::Fork(bool detach) {
    PORTO_ASSERT(!PostFork);
    auto lock = std::unique_lock<std::mutex>(ForkLock);
    ForkTime = time(NULL);
    localtime_r(&ForkTime, &ForkLocalTime);
    pid_t ret = fork();
    if (ret < 0)
        return TError::System("TTask::Fork");
    Pid = ret;
    if (!Pid)
        PostFork = true;
    else if (!detach)
        Tasks[Pid] = this;
    Running = true;
    return OK;
}
TError TTask::Wait() {
    auto lock = std::unique_lock<std::mutex>(ForkLock);
    if (Running) {
        pid_t pid = Pid;
        int status;
        lock.unlock();
        /* main thread could be blocked on lock that we're holding */
        if (waitpid(pid, &status, 0) == pid)
            pid = 0;
        lock.lock();
        if (!pid) {
            if (Running) {
                Tasks.erase(Pid);
                Running = false;
            }
            Status = status;
        }
    }
    while (Running) {
        if (kill(Pid, 0) && errno == ESRCH) {
            Tasks.erase(Pid);
            Running = false;
            Status = 100;
            return TError("task not found");
        }
        if (Tasks.find(Pid) == Tasks.end())
            return TError("detached task");
        TasksCV.wait(lock);
    }
    if (Status)
        return TError(EError::Unknown, FormatExitStatus(Status));
    return OK;
}
pid 控制的更多相关文章
- 【iCore3应用开发平台】发布 iCore3 应用开发平台PID控制代码
		说明:1.本代码包包含FPGA和STM32F407两部分内容2.FPGA工程为出厂代码FPGA工程,版本为REV43.STM32F407为只含PID控制的ARM工程4.在使用风扇过程中,请勿将手伸入扇 ... 
- 两轮自平衡小车双闭环PID控制设计
		两轮自平衡小车的研究意义 ... 
- 数字式PID控制的应用总结
		PID控制是一个二阶线性闭环控制器,通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.PID控制优点:a. 技术成熟,b. 易被人们熟悉和掌握,c. 不需要建立数学模型 ... 
- PID控制学习笔记(二)
		不管是基本的PID控制还是变形的PID控制算法,其核心都是对输入信号(设定值信号.测量信号或者偏差信号等)做基本的比例.积分.微分运算,最终提供给被控过程良好的调节信号. 在过程控制仪表,特别是在数字 ... 
- SLAM+语音机器人DIY系列:(四)差分底盘设计——5.底盘PID控制参数整定
		摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ... 
- MATLAB-离散系统的数字PID控制仿真
		%PID Controller clear all; close all; ts=0.001; %采样时间=0.001s sys=tf(,]); %建立被控对象传递函数 dsys=c2d(sys,t ... 
- 了解PID控制
		@2019-03-07 [小记] 了解PID控制 比例 - 积分 - 微分 积分 --- 记忆过去 比例 --- 了解现在 微分 --- 预测未来 
- PID控制最通俗的解释与PID参数的整定方法
		转自->这里 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解.阅读本文 ... 
- STM32L476应用开发之七:流量的PID控制
		在气体分析仪使用过程中,为了力求分析结果的准确性,一般要求通过的气体流量尽可能的稳定.为了保证流量控制的稳定,我们采用PID调节来控制气路阀门的开度. 1.硬件设计 我们采用的流量计为气体质量流量计, ... 
- 转 C#实现PID控制的模拟测试和曲线绘图
		C#实现PID控制的模拟测试和曲线绘图 本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模 ... 
随机推荐
- Gamma阶段第九次scrum meeting
			每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ... 
- Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)
			在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着 ... 
- C的位运算符
			1.前言 C的位运算符有&(按位与).|(按位或).^(按位异或).~(按位取反),位运算符把运算对象看作是由二进制位组成的位串信息,按位完成指定的运算,得到相应的结果. 2.位运算符 在上面 ... 
- Codeforces Round #557 (Div. 1) 简要题解
			Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ... 
- 总结:WPF中ResourceDictionary资源文件的查找和遍历方法
			原文:总结:WPF中ResourceDictionary资源文件的查找和遍历方法 一.查找包含制定关键字的资源 ResourceDictionary GetThemeDictionary() ... 
- ABP 执行sql语句
			由于业务繁琐,用EF比较麻烦,需要用到sql语句,然后网上找了很久,找到的例子都是老版本的,新版本有先声明已经去掉,不能用了 在这里做个小记 首先注入实例 private readonly IDbCo ... 
- Apache Tomcat 9.0 Tomcat9 服务无法启动。发生服务特定错误: 4.
			在Tomcat的安装目录下,bin文件夹里面 找到tomcat9w.exe 双击进去,将第四页java里面第一个复选框Use default 选中 保存即可启动tomcat9服务 
- CMU-Multimodal SDK Version 1.1 (mmsdk)使用方法总结
			年10月26日 星期六 mmdatasdk: module for downloading and procesing multimodal datasets using computational ... 
- POST请求转换为PUT或者Delete请求、处理post请求乱码的过滤器、Get请求乱码
			在web.xml中配置 <!--配置HiddenHttpMethodFilter : 将所有的POST请求转换为PUT或者Delete请求 --><filter> <fi ... 
- 24、vuex刷新页面数据丢失解决办法
			刷新页面时候将state数据保存到localStorage里面: export default { name: 'App', created () { //在页面加载时读取localStorage里的 ... 
