Serrure Pthread Mutex débloquée par différents fils

Une question Naïve ..

J'ai lu avant de dire - "UN MUTEX doit être déverrouillé que par le thread qui l'a enfermé."

Mais j'ai écrit un programme où THREAD1 serrures mutexVar et s'en va dormir. Puis THREAD2 pouvez directement déverrouiller mutexVar faire certaines opérations et de retour.

==> je sais que tout le monde dire pourquoi je le fais ?? Mais ma question est: Est - ce une bonne attitude de MUTEX ??

==> Ajouter l'exemple de code

void *functionC()
{
   pthread_mutex_lock( &mutex1 );
   counter++;
   sleep(10);
   printf("Thread01: Counter value: %d\n",counter);
   pthread_mutex_unlock( &mutex1 );
}

void *functionD()
{
   pthread_mutex_unlock( &mutex1 );
   pthread_mutex_lock( &mutex1 );
   counter=10;
   printf("Counter value: %d\n",counter);
}

int main()
{
   int rc1, rc2;
   pthread_t thread1, thread2;

   if(pthread_mutex_init(&mutex1, NULL))
   printf("Error while using pthread_mutex_init\n");

   if( (rc1=pthread_create( &thread1, NULL, &functionC, NULL)) )
   {   
      printf("Thread creation failed: %d\n", rc1);
   }   

   if( (rc2=pthread_create( &thread2, NULL, &functionD, NULL)) )
   {   
      printf("Thread creation failed: %d\n", rc2);
   } 

source d'informationauteur codingfreak