2013-11-09 1 views
0

메인에 10 개의 스레드를 생성하는 C 코드가 있습니다. 그런 다음 그 스레드에 참여합니다.안전하게 스레드 취소하기

각 스레드는이 같은 함수로 이동 :

void test_function(char *findThis) 
{ 
    // do something 

    // then something like this 
    if message cancel thread? 
} 

메시지는 아마 부울 글로벌 변수가 될 것입니다. 이후에 스레드를 취소하려면 어떻게합니까?

+1

'if (message) return; –

+1

간단합니다. 그냥 그 기능에서 돌아옵니다. –

+1

:) 가장 간단한 대답이 정확해야합니다. – aluminumMonster

답변

1

C에서 스레드는 특정 기능을 실행합니다. 그 기능에서 돌아 오면 더 이상 존재하지 않습니다. 당신이 당신의 스레드가 중지하려면

그래서, 간단하게 다음과 같이 그 함수에서 반환 - 물론

if (got_my_message) { 
    return; 
} 

, 당신은 당신이 전에 (즉, 할당 된 메모리를 확보) 청소에 필요한 자원을 수행해야 그래서.

+0

감사합니다. 나는 그것을 생각하고 있었다. – aluminumMonster

+1

'글로벌 부울 변수'도 '휘발성'으로 표시해야한다고 생각하십니까? (Disclaimer, 나는 결코 내 인생에서 쓰레드를 사용하지 못했다!) –

+0

왜 휘발성이고 왜 좋은 생각일까요? – aluminumMonster