免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1400 | 回复: 4
打印 上一主题 下一主题

[SCO UNIX] 关于原子操作的一些问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-19 09:35 |只看该作者 |倒序浏览
我对原子操作理解不好,请各位大虾帮忙指点迷津。是否包含在一串连续的
while,if,else语句下的单步函数就是原子操作?如下程序一:
if ((fd = open(pathname, O_WRONLY)) <0 )
   if (errno == ENOENT)   {
      if (( fd = creat(pathname, mode)) <0 )
         printf("creat error";
   } else
         printf("open error";
以上的是一个原子操作的例程,但是我修改之后程序如下程序二:
if ((fd = open(pathname, O_WRONLY)) <0 )
   if (errno == ENOENT)   {
      if (( fd = creat(pathname, mode)) <0 )  {
         printf("creat error";
         for (i=0;i<10;i++)     {fd = dup(0);  fid=fd; }
         for (j=i-2;j>;=0;j--)   close(fid[j]);
      }
   } else
         printf("open error";
第二个程序是否还算是原子操作,希望各位大虾指点迷津,多谢!

论坛徽章:
0
2 [报告]
发表于 2003-11-19 10:02 |只看该作者

关于原子操作的一些问题

原帖由 "ssw0989" 发表:
    }
   } else
         printf("open error";
第二个程序是否还算是原子操作,希望各位大虾指点迷津,多谢!

所谓的原子操作就是一个不可分割的操作,原子操作是在内核级实现的,你编一个小程序就号称要实现原子操作,此志可嘉,可喜可贺!

论坛徽章:
0
3 [报告]
发表于 2003-11-20 14:58 |只看该作者

关于原子操作的一些问题

那如果我在那段小程序中屏蔽掉中断信号哪?

论坛徽章:
0
4 [报告]
发表于 2003-11-20 15:38 |只看该作者

关于原子操作的一些问题

1。你不可能屏蔽所有的信号。
2。在应用级别是不可能实现原子操作。原子操作是操作系统实现的。因为原子操作不只是“不被打断”这么简单的。在多任务系统中还要涉及到进程切换,失败操作恢复等。

论坛徽章:
0
5 [报告]
发表于 2003-12-01 11:06 |只看该作者

关于原子操作的一些问题

多谢,我知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP