早上好,我尝试使用信号量 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。