首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 可再入函数与不可再入函数
【标  题】:可再入函数与不可再入函数
【关键字】:
【来  源】:http://www.cublog.cn/u/25334/showart.php?id=278515

可再入函数与不可再入函数

char *get_buffer()
{
      static char buf[100];
      return buf;
}
get_buffer函数是不可重入的。因为当2个以上的线程都使用get_buffer的返回值去访问buf缓冲区的时候,先往buf写入的数据就可能被后写入的数据覆盖。

void *thread1(void *params)
{
      char *buf = get_buffer();
      strcpy(buf, "string1");
}

void *thread2(void *params)
{
      char *buf = get_buffer();
      strcpy(buf, "string2");
}


thread1不能保证buf的内容是"string1",thread2不能保证 buf的内容是"string2"。函数“不可再入”就是指函数的实现不保证函数在多线程环境下是正确的。函数中如果没有使用到全局变量或者在使用全局变量的时候使用互斥的信号量来保证线程独占资源,那个这个函数就是“可重入”的。
用SQL实现行列转换的一个例子:【上一篇】
从JAVA到C++ 语法结构的区别 [转]:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 索爱w810i w810的flashlite菜单
  • 因此网络的安全防护也需采用分层次的拓扑
  • Linux 系统命令(系统管理)
  • C# Application Markup Language
  • VC文件扩展名解读大全 (zz)转
  • 在sled10中使用带QQ的gaim
  • 使用Fileupload上传组件
  • javaMail发邮件的javaBean[SSL]
  • Windows环境下32位汇编语言程序设计
  • Photoshop渐变工具1
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.