+ -
当前位置:首页 → 问答吧 → 大神呢· 假设两个函数同时调用一个函数,两个fopen同时打开一个文件

大神呢· 假设两个函数同时调用一个函数,两个fopen同时打开一个文件

时间:2010-08-18

来源:互联网

static  number;
A ()
{
    number= XX// 随便赋值
    fp = fopen("/proc/stat", "r" );
}

B()
{
     A();
}

C()
{
     A();
}
假设 B(), C() 同时被调用了,会冲突吗?
类比下 如果是 线程呢 ?

作者: kface   发布时间: 2010-08-18

static  number 静态变量么?跟打开文件有啥关系

作者: hellioncu   发布时间: 2010-08-18

回复 kface

  可以同时打开啊

   不过要处理好锁保护之类的,不然文件内容可能不是你想的

作者: chong232   发布时间: 2010-08-18

回复 hellioncu


    没关系啊·  A函数中包括两个动作。一个是对静态变量的赋值。另一个对fopen 文件,读数据的呢。

作者: kface   发布时间: 2010-08-18



QUOTE:
回复  hellioncu


    没关系啊·  A函数中包括两个动作。一个是对静态变量的赋值。另一个对fopen 文件 ...
kface 发表于 2010-08-18 14:28




    静态变量的值可能会有问题,跟具体类型等有关
fp是局部变量把,那没有事情

作者: hellioncu   发布时间: 2010-08-18

回复 chong232


    那两个函数同时对 静态变量 赋值操作了呢 ?这个又会怎么样啊

作者: kface   发布时间: 2010-08-18



QUOTE:
回复  chong232


    那两个函数同时对 静态变量 赋值操作了呢 ?这个又会怎么样啊
kface 发表于 2010-08-18 14:38




    这个看赋值是不是原子的了。是原子,则是两者之一,不是原子就没法说了

作者: hellioncu   发布时间: 2010-08-18

回复 kface


    它们肯定是有先后的, 变量最终值是最后操作的那个

作者: chong232   发布时间: 2010-08-18

lz你那头像太伤眼睛了

作者: snriyt   发布时间: 2010-08-18

回复 snriyt


    这头像不是挺有视觉冲击的嘛? 哈哈

作者: kface   发布时间: 2010-08-18

回复 hellioncu


    谢谢大哥们,以后小弟多来这·   ~

作者: kface   发布时间: 2010-08-18

同时调用是否理解成两线程?

作者: whiteme   发布时间: 2010-08-18