1

早上好,我尝试使用信号量 c 库执行 2 个线程 t1 和 t2。我写了这段代码

#include <pthread.h>
#include <stdio.h>
#include <semaphore.h>
#define Max 100;
int cpt=0;
sem_t mutex;
void* count(void* data)
{
    int i;
    sem_wait(&mutex);
    printf("thread %d enter in critical section\n",
    data);
    for (i=0;i<100;i++)
    {
        printf("Thread %d: Counter Value: %d\n", data, cpt);
        cpt++;
        printf(" thread %d modify the counter %d\n",data,cpt);

    }
    printf("thread %d exit critical section \n",
    data);
    sem_post(&mutex);
    pthread_exit(NULL);

}
int main()
{
    pthread_t t1,t2;
    sem_init(&mutex,0,1);// binary semaphore
    pthread_create(&t1, NULL, count, (void*)1); 
    pthread_create(&t2, NULL, count, (void*)2); 
    pthread_join(t1, NULL);
    pthread_join(t2, NULL); 
    sem_destroy(&mutex);
    printf("Compteur: %d\n", cpt);


}

代码工作没有错误,但我有 2 个线程进入临界区,我希望第一个线程显示 100 个值,线程 2 继续其他值直到 200。

4

0 回答 0