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