проблема с потоками - PullRequest
0 голосов
/ 04 мая 2010

Я хочу сделать 10 раз, чтобы отсканировать номер и распечатать его снова. Как я могу это сделать?

#include <stdio.h>

#include <pthread.h>
#include <semaphore.h>

sem_t m;
int n;

void *readnumber(void *arg)
{
        scanf("%d",&n);
        sem_post(&m);
}

void *writenumber(void *arg)
{   
    //int x =3;
    //while(x>0)
    //{
        //x = x-1;
        sem_wait(&m);
        printf("%d",n);

    //}
}

int main(){
    pthread_t t1, t2;
    sem_init(&m, 0, 0);
    pthread_create(&t2, NULL, writenumber, NULL);
    pthread_create(&t1, NULL, readnumber, NULL);
    pthread_join(t2, NULL);
    pthread_join(t1, NULL);
    sem_destroy(&m);
    return 0;
}

1 Ответ

3 голосов
/ 04 мая 2010

Я не совсем уверен, что вы спрашиваете, но обычно, если вы хотите, чтобы что-то происходило определенное количество раз, вы хотите использовать цикл for, например:

for(int i = 0; i < 10; i++) {
//whatever you want to happen 10 times goes here
}

Причина, по которой я запутался, заключается в том, что немного странно, что кто-то понял бы, как создавать потоки POSIX, не зная, что такое цикл for.

...