您的位置:程序门 -> linux/unix社区 -> 内核及驱动程序研究区



静态分配的互斥量的问题pthread_mutex_initializer


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


静态分配的互斥量的问题pthread_mutex_initializer
发表于:2008-02-02 12:07:38 楼主
  pthread_mutex_t   mutex1   =   pthread_mutex_initializer;

1.都说pthread_mutex_initializer是对互斥量的静态分配,那么mutex1   要定义成
static的吗
2.不定义成静态的,而是定义成全局的,有什么区别

  pthread_mutex_t   mutex1   =   pthread_mutex_initializer;
int   main()
{
        lock(mutex1)
        临界区
        unlock(mutex1)
}

static     pthread_mutex_t   mutex1   =   pthread_mutex_initializer;
int   main()
{
        lock(mutex1)
        临界区
        unlock(mutex1)
}
这两个会有什么区别?
发表于:2008-02-16 10:09:561楼 得分:0
全局变量,默认就是static的

没啥区别
发表于:2008-02-18 13:26:542楼 得分:0
楼上的这个说法是不对。public和static是不同的。
public:是指它的访问权限是全局的。
static:是指静态的,在整个程序运行的过程中,只分配一块内存空间来储存这个变量。,在类加载时就定义,不需要创建对象就可以使用。
发表于:2008-02-18 22:17:063楼 得分:0
在c语言中,你程序里定义的全局变量和静态变量只有访问范围的区别;
在c++中,public与static变量另当别论,两者的使用场景也与c语言不能相提并论。
发表于:2008-02-18 22:35:354楼 得分:0
c中,全局变量默认就是static类型的,把变量分配在全局的数据段中

发表于:2008-02-26 17:24:395楼 得分:0
4楼的,全局变量默认是extern的,不要误导别人。而且对于全局变量,extern和static表示的是链接类型而不是存储类型
发表于:2008-02-26 17:49:396楼 得分:0
回楼主:
1.静态分配是指数据位于data段或bss段中,生命周期为整个程序,动态分配则位于堆或栈中,一般不会一直存在。
#   define   pthread_mutex_initializer   \
    {   {   0,   0,   0,   0,   0,   {   0   }   }   }
所以他只是向mutex变量赋初值0。
2.你要不要定义成static的只是看你需不需要其他文件引用该变量,控制链接类型。


快速检索

最新资讯
热门点击