【问题标题】:need to free a mutex?需要释放互斥锁?
【发布时间】:2012-02-23 18:38:26
【问题描述】:

我有一个非常简单的(示例)C 程序,如下所示。我想确保我释放任何必要的资源,这样 valgrind 就不会抱怨。我需要释放 mutex1 吗?或者在程序终止之前做些什么?还是mutex1没有分配内存?

02  pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
03  int counter=0;
04   
05  /* Function C */
06  void functionC()
07  {
08     pthread_mutex_lock( &mutex1 );
09     counter++
10     pthread_mutex_unlock( &mutex1 );
11  }

【问题讨论】:

    标签: c free mutex init


    【解决方案1】:

    不,它本来就很好。不必对静态分配的互斥体使用 pthread_mutex_destroy。

    【讨论】:

      【解决方案2】:

      不,您不需要释放mutex1PTHREAD_MUTEX_INITIALIZER 是一个隐藏结构初始化的宏。

      【讨论】:

        【解决方案3】:

        你的代码中的mutex1 是一个全局变量,而不是一个堆分配的变量。您不需要释放它。当您的应用终止时,操作系统将释放您的应用使用的所有资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-17
          • 2010-12-25
          • 1970-01-01
          • 2012-03-25
          • 2010-09-12
          • 2011-12-01
          • 2015-03-21
          相关资源
          最近更新 更多