我应该如何使用锁定/解锁互斥锁?

时间:2014-05-25 04:30:18

标签: multithreading operating-system pthreads mutex

实现一个创建两个线程的程序。线程将打印其ID(pthread_self)10次然后停止。确保打印的ID始终交替(即A,B,A,B,...)

问题是:我应该在何处放置锁并解锁互斥锁?

#include <stdio.h>
#include <pthread.h> 
#define N 2 

pthread_mutex_t mtx; 

void* func (void* arg) { 
    int i=0; 
    int f=1;

    for(i=0; i<10; i++) { 
        printf("%d%s%d\n",f ,": ", (int)pthread_self()); 
        f++;  
    }
    return NULL; 
}

int main() { 
    int i; 
    pthread_t thr[N]; 
    pthread_mutex_init(&mtx, NULL); 

    for(i=0; i<N; i++) { 
        pthread_create(&thr[i], NULL, func, NULL); 
    } 

    for(i=0; i<N; i++) { 
        pthread_join(thr[i], NULL); 
    } 

    pthread_mutex_destroy(&mtx);  
    return 0; 
}

0 个答案:

没有答案