当前位置:  技术问答>linux和unix

麻烦高人帮我分析下下面C程序是否会引起死锁!

    来源: 互联网  发布时间:2016-07-28

    本文导语:  题目:下面的代码是按照TestAndSet来实现的信号量,试分析他是否会引起死锁? int tas(int *lock)//这个函数是用来“忙等待”的 {   int retval;   retval = *lock;   *lock = 1;   return retval; } void down(semaphore_t *s) {    f...

题目:下面的代码是按照TestAndSet来实现的信号量,试分析他是否会引起死锁?
int tas(int *lock)//这个函数是用来“忙等待”的
{
  int retval;
  retval = *lock;
  *lock = 1;
  return retval;
}


void down(semaphore_t *s)
{
   for(;;)
   {
      while(tas(&lock));
      if(*s > 0)
      {
         *(s)--;
         break;
       }
       lock = 0;
   }
   lock = 0;
}

void up(semaphore_t *s)
{
   while(tas(&lock));
   *(s)++;
   lock = 0;

}

|
while(tas(&lock));

操作系统应该学过了,忙等待会引起dead lock的,
原因在与一个进程在执行上述语句时, 在忙等,其他进程可能没有调度的机会,
更重要的是这里的tas不是原子操作.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 麻烦,好大的麻烦!!
  • 谁有CVS?麻烦帮我下载些源码,急用,万分感谢!
  • 麻烦各位指点一下小弟
  • 初写MAKEFILE遇到问题,麻烦大家帮忙。
  • java开发环境配置为什么这么麻烦
  • java 275 怎么样,有没有用呀?那位知道?麻烦添一块砖吧。
  • 麻烦版主帮我结了这个贴
  • EJB调试起来好麻烦,请问各位有什么高招?
  • 有谁知道台湾中磊(苏州)研发中心的,麻烦告之!!
  • 学习Unix/Linux,麻烦大家推荐本书
  • 谁有linux进程管理方面的资料呀,麻烦传一个
  • 安装VMware出错,麻烦高手指点一下!
  • 想学linux驱动 麻烦高手们推荐本好书啊~~
  • 麻烦推荐下关于linux下的网络帮助API相关书籍
  • 问Linux高手一个安卓系统的问题,麻烦回答一下,谢谢!
  • java编程的一些小问题,麻烦帮忙看看
  • 小弟的程序遇到麻烦了,想和哪位谈谈java的线程(57226475)
  • 麻烦介绍几个你人为不错的java论坛
  • 麻烦,介绍几个linux/unix酷站.
  • 我碰到麻烦了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3