2016-08-25 1 views
1

루프에 남아있는 새 스레드를 만들고 싶습니다. 다음과 같은 것 :pthread를 사용하여 시계 만들기

void Clock() { 
    double Time = 0; 
    while (1) { 
     usleep(1000); 
     Time = (Time+0.1); 
    } 
    return; 
} 

그러면 다른 기존 스레드가 최신 클럭 값에 액세스하여이를 사용할 수있게됩니다. 어떻게 "Time"변수를 선언하여 모든 스레드가 액세스 할 수 있도록하고,이를 수용하기 위해 위의 코드를 어떻게 변경합니까? 또한 액세스하려면 어떻게해야합니까?

+1

글로벌 변수로 만드시겠습니까? –

+0

@JoachimPileborg 많은 소스 파일이 있는데, 헤더 파일에 전역 변수를 선언하여 모든 소스 파일에서 사용할 수 있도록 할 수 있습니까? 또는 다른 해결책이 있습니다. – Mst137

+0

그냥 글로벌 변수로 만들면 경합 조건을 구걸하게 될 것입니다. 뮤텍스를 잠그는 접근 자 함수로 정적으로 만듭니다. 'Clock()'함수에서 같은 뮤텍스를 잠그십시오 (잠시 동안이 아니라 업데이트하는 동안!). –

답변

1

현재 시간을 얻고 싶으면 스레드없이 수행 할 수 있습니다. 예를 들어 Get the current time in C을보십시오.

스레드를 사용하는 경우 스레드가 독립적으로 실행된다는 점에 유의하십시오. 간단한 예를 보려면 Mutex lock threads을보십시오. 스레드를 만들려면 pthread_create을 사용해야하고 Time 변수를 보호하려면 pthread_mutex을 사용해야합니다.

처음부터 시작하고 다음 번에 원자력을 남기는 것이 좋습니다.

관련 문제