Използвам горния код, за да увелича брояч, като използвам 2 нишки, които независимо поемат заключване на mut и увеличават брояча. Изправен съм пред задънена улица, след като нишките влязат в тази функция.
pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
void *increment_counter(void *counter_addr)
{
int max = MAX_COUNTER_VALUE;
int iter;
int counter;
for(iter=0;iter< max ;iter++)
// LOCK
pthread_mutex_lock(&mut);
counter++;
// UNLOCK
pthread_mutex_unlock(&mut);
return NULL;
}
Може ли някой да ми каже къде точно бъркам?
int* counter = counter_addr
и++*counter
. - person Jens Gustedt   schedule 29.09.2012