нужно освободить мьютекс? - PullRequest
1 голос
/ 01 февраля 2012

У меня есть очень простая (примерная) программа на C следующим образом.Я хочу, чтобы я освободил все необходимые ресурсы, чтобы valgrind не жаловался.Нужно ли освобождать mutex1?Или сделать что-нибудь до завершения программы?Или мьютекс1 не выделяет память?

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  }

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

Нет, вам не нужно бесплатно mutex1.PTHREAD_MUTEX_INITIALIZER - это макрос, который скрывает инициализацию структуры.

2 голосов
/ 01 февраля 2012

Нет, все хорошо, как есть.Нет необходимости использовать pthread_mutex_destroy для статически распределенного мьютекса.

0 голосов
/ 01 февраля 2012

mutex1 в вашем коде - это глобальная переменная, а не переменная, выделенная в куче. Вам не нужно освобождать его. Операционная система освободит все ресурсы, которые ваше приложение будет использовать после его завершения.

...