资源受限环境下C++编程

原创 2018年04月16日 19:21:31

相对于PC环境,嵌入式环境里CPU、内存、文件等等资源都很紧张,因此对于一些C++代码背后的细节谨慎处理。

举例1:构造与析构

假如有如下类声明

class A
{
public:
    A(void);
    A(const A& copy);
    ~A(void);
    A operator=(const A& copy);
    A operator+(const A& a) const;
};
对于如下代码
class A a1;
class A a2;
class A a3;

a1 = a2 + a3;

会多次调用各种构造函数、赋值函数、析构函数。

相比较C语言的直接了当,C++会在代码背后偷偷做很多事情。因此对于计算能力受限的环境,要谨慎考虑。


举例2:全局对象、静态对象

嵌入式环境经常在main()函数里初始化系统、初始化硬件。

全局对象、静态对象,会在main()之前构造,因此如果在构造函数里实现复杂逻辑、调用系统API会非常危险,因为这时候系统很可能还没有初始化呢;其次,如果代码里有多个全局对象、静态对象,初始化顺序不确定。

推荐的做法是构造函数里少做事,不调用系统API,不调用标准库,而是提供init()方法。在main()函数里显式调用init方法,从而控制各个对象的初始化顺序。


总而言之,资源受限环境C++编程,要谨慎处理细节,做到控制代码,而不是被代码控制。






Java编程思想 之 共享受限资源

并发程序可以同时做多件事情,但是, 两个或多个线程彼此互相干涉的问题也就出现了。以下例子出自>一书的并发部分....
  • u013096145
  • u013096145
  • 2015-12-04 14:46:43
  • 314

受限资源环境下的协议

  • 2011年09月08日 10:28
  • 5.36MB
  • 下载

Java并发之共享受限资源

当使用多线程时,多个线程之间彼此相互干涉的问题也就出现了。比如多线程爬虫时,多个线程同时维护一个uri队列,这样就可能会存在冲突。例如线程A准备取uri_a,但是线程B突然就抢走了uri_a,再比如线...
  • u010853261
  • u010853261
  • 2016-12-27 23:58:22
  • 649

【Linux&C++】Linux环境下C++编程

在阅读的过程中有任何问题,欢迎一起交流 邮箱:1494713801@qq.com   QQ:1494713801   在linux下,开发工具被切割成一个个独立的小工具。各自处理不同的问题。例如: ...
  • u010515761
  • u010515761
  • 2015-06-18 16:03:53
  • 1702

java多线程系列----------- 共享受限资源(一)

可以把单线程程序当作在问题求解域求解的单一实体,每次只能做一件事。因为只有一个实体,所以永远不用担心诸如“两个实体试图同时使用一个资源”这样的问题——比如,两个人在同一个地方停车,两个人同时走过一扇门...
  • zhoupenglei
  • zhoupenglei
  • 2015-05-25 08:48:09
  • 407

受限的用户SHELL环境

有些特殊情况下需要实现将系统内普通用户限定在指定目录下,并且只能使用系统管理员设定的命令。lshell就是实现这样功能的一个神器。 lshell提供了一个针对每个用户可配置的限制性shell,lsh...
  • savior141
  • savior141
  • 2017-05-06 22:08:06
  • 290

资源受限设备开发要点提示

  • 2011年03月17日 11:01
  • 2KB
  • 下载

linux下c/c++编程环境搭建

Ubuntu中没用自带C/C++开发环境,需要用户自己配置。在UBUNTU中文论坛中的一些帖子集合。 一、安装基本开发环境 本人想学习一下Linux下的C,C++程序开发,这几天一直在研究...
  • baidu_28563321
  • baidu_28563321
  • 2015-06-05 10:18:10
  • 2075

MTK - socket

在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。  同步  所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不...
  • linhu_jay
  • linhu_jay
  • 2011-03-18 15:29:00
  • 462

漫谈并发编程(三):共享受限资源

解决共享资源竞争 一个不正确的访问资源示例      考虑下面的例子,其中一个任务产生偶数,而其他任务消费这些数字。这里,消费者任务的唯一工作就是检查偶数的有效性。      我们先定义一个偶数生成器...
  • Troy__
  • Troy__
  • 2014-10-29 20:03:45
  • 1446
收藏助手
不良信息举报
您举报文章:资源受限环境下C++编程
举报原因:
原因补充:

(最多只允许输入30个字)