Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 스레드를 사용하여 1 2 3을 무한히 인쇄하십시오.

<시간/>

여기서는 c 프로그래밍 언어의 스레드를 사용하여 1 2 3 시퀀스를 무한 반복해서 인쇄해야 합니다.

코드에서 원하는 샘플 출력을 보겠습니다.

1 2 3 1 2 3 1 2 3 1 2 3

이를 위해 C 프로그래밍 언어에서 나란히 실행되는 세 개의 스레드를 사용해야 합니다. 그리고 마지막 값을 기반으로 값이 업데이트될 첫 번째 스레드에서 1로 초기화되는 변수입니다. 그리고 함수에서 무한 루프를 실행합니다.

예시

솔루션을 구현하는 프로그램을 살펴보겠습니다.

*pre>#include #include pthread_cond_t cond1 =PTHREAD_COND_INITIALIZER;pthread_cond_t cond2 =PTHREAD_COND_INITIALIZER;pthread_COND_INITIALIZER;pthread_COND_INITIALIZER;pthread_FOITERIZER=intvoid_cond_t cond3 =PTHREAD_COND_INITIALIZER;_t 잠금 값 { 동안(1) { pthread_mutex_lock(&lock); if (값 !=(int)*(int*)n) { if ((int)*(int*)n ==1) { pthread_cond_wait(&cond1, &lock); } else if ((int)*(int*)n ==2) { pthread_cond_wait(&cond2, &lock); } else { pthread_cond_wait(&cond3, &lock); } } printf("%d", *(int*)n); if (값 ==3) { 값 =1; pthread_cond_signal(&cond1); } else if(값 ==1) { 값 =2; pthread_cond_signal(&cond2); } else if (값 ==2) { 값 =3; pthread_cond_signal(&cond3); } pthread_mutex_unlock(&lock); } return NULL;}int main(){ pthread_t tid1, tid2, tid3; 정수 n1 =1, n2 =2, n3 =3; pthread_create(&tid1, NULL, foo, (무효 *)&n1); pthread_create(&tid2, NULL, foo, (무효 *)&n2); pthread_create(&tid3, NULL, foo, (무효 *)&n3); 동안(1); 반환 0;}

출력

1 2 3 1 2 3 1 2 3 1 2 3 1 2 3….