Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2205900
  • 博文数量: 436
  • 博客积分: 9833
  • 博客等级: 中将
  • 技术积分: 5558
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-29 10:27
文章存档

2013年(47)

2012年(79)

2011年(192)

2010年(118)

分类: LINUX

2013-01-09 17:53:46

可重入代码(Reentry code)也叫纯代码(Pure code)是一种允许多个进程同时访问的代码。为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。

例:可重入代码指可被多个函数或程序凋用的一段代码(通常是一个函数),而且它保证在被任何一个函数调用时都以同样的方式运行,如:
  void test()
  {
  int i;
  i=2;
  printf("%d\n",i );
  i++;
  printf("%d\n",i);
  }
  无论谁调用它结果都一样,得到
  2
  3
  但
  void test()
  {
  static int i=2;
  printf("%d\n",i );
  i++;
  prinft("%d\n",i);
  }
  就不一样了,对不同的调用结果不一样:如:
  第一次:
  2
  3
  第二次
  3
  4
  第三次
  4
  5
  等等...... 

可重入就是,一个函数没有执行完成,由于外部因素或内部调用,又一次进入该函数执行。可重入代码,必须保证资源的互不影响的使用,比如全局变量,系统资源等。 在LINUX设备驱动中 关于可重入代码:
  简单介绍,因为驱动能够被多个进程调用,互不干扰,这样驱动必须是可重入的。
  可重入最简单的理解就是任何变量都是局部变量。可重入指函数在运行过程中,被中断打断后,待返回时仍然能够正常运行。这就需要在编写代码时注意全局变量和公用资源的使用,同时还需要有编译器的支持。否则,ucos ii就不能移植到其中了!!
阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~