Наивный вопрос..
Я читаю, прежде чем говорить - " MUTEX должен быть разблокирован только потоком, который его заблокировал."
Но я написал программу, где THREAD1 блокирует mutexVar и идет на сон. Затем THREAD2 может непосредственно разблокировать mutexVar, выполнить некоторые операции и вернуться.
== > Я знаю, что все говорят, почему я так делаю? Но мой вопрос: это правильное поведение MUTEX??
== > Добавление примерного кода
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);
}