장점

2014-05-23 3 views
0

나는뿐만 아니라 또한장점

static void report(void) 
{ 
     /*Print statistics*/ 
} 

대략마다 호출되는 통계를 인쇄 일부 statistics.The 기능은 인쇄 데이터를 캡처하고 파일로 기록 할 캡처 프로그램이

void capture_program() 
{ 


      while() 
      { 
        /*Main loop*/ 
        if(doreport) 
          report(); 
      } 
} 

타이머의 만료가 플래그를 클리어한다라고 report()이 플래그를 설정하는 설정 doreport flag.If 같은 초마다 만료 경보를 사용 second.So 프로그램이다.

지금 내 질문

내가이보고 기능은 다른 프로세스 만약 lock.Now에서 일부 코드를 실행하는 것입니다 할 에 thread.The 주요 의욕 별도의에보고 기능을 이동하는 것을 계획하고있다 자물쇠를 잡고있는 경우 캡처 프로세스가 패킷을 버리는 것을 차단합니다. 따라서 보고서를 스레드로 옮기는 것이 더 좋은 방법이라고 생각합니다.

2)보고를 별도의 스레드에서 구현하려는 경우 매초마다보고 할 때 스레드 내부에 타이머를 사용해야합니까?

      OR 

매 1 초 간격으로 별도의 스레드에보고 기능을 이동의 장점은 무엇

+1

그들이 길을 일을 유지하는 단점은 무엇입니까? 그것은 작동, 그렇지? 그것을 바꾸려는 동기는 무엇입니까? 루프가 끊임없이 회전하고 연소하는 동안? – Duck

+0

@Duck - 업데이트 된 질문 설명을 참조하십시오. – liv2hak

답변

1

에서 스레드 웨이크 업함으로써 않는 것이 더 좋은 방법이 있나요?

예를 들어보고 기능이 간단하지 않은 경우 몇 가지만 인쇄하면 별도의 스레드가 많은 도움이 될 것이라고 생각하지 않습니다.

보고를 별도의 스레드로 구현하려는 경우 매초마다보고하기 위해 스레드 내부의 타이머를 사용해야합니까?

당신은 타이머를 필요가 없습니다

, 당신은 단지 다음과 같이 매 초마다 잠을 잘 수 있습니다

static void report(void) 
{ 
    while (1) { 
     /*Print statistics*/ 
     sleep(1); 
    } 
} 
+1

그것은 1 초 이상 기다리고 표류 할 것입니다. 보고서가 얼마나 오래 걸리는지를 측정 한 다음 1-x 길이로 잠을 자면 두 번째 보고서에 머무르게됩니다. 그리고 다른 것 : http://tdistler.com/2010/06/27/high-performance-timing-on-linux-windows –