정해진 날자에 특정한 작업을 수행하려는 프로그램을 짜고 있는데요...
while(1) { if( 특정날자 조건) { .... 수행할 작업 exit(0); } }
단순 무식하게 이런식으로 짜고, 데몬으로 수행했더니
top을 본 결과 이넘이 CPU를 거의 다 사용하고 있는걸루 나와버리네요.
특정한 날자가 될때까지 대기할때 자원은 사용하지 않고 기다리게 할 수 있는 방법 없을까요?
읽어주셔서 감사합니다. (__)
while(1) {...} 과 같이 하시면 거의 모든 CPU 자원을 끌어다 쓴다고 보시면 되겠습니다. 이러한 방식을 polling 이라고 하지요 (cf. interrupt)
cron 을 쓰시면 어떨까요?http://kldp.org/Translations/html/LAME/using-cron.html
훗, 못 믿겠나?
while(1) {...} 과 같이 하시면 거의 모든 CPU 자원을 끌어다 쓴다고 보시면 되겠습니다. 이러한 방식을 polling 이라고 하지요 (cf. interrupt) cron 을 쓰시면 어떨까요?http://kldp.org/Translations/html/LAME/using-cron.html
busy waiting 이라고 하죠 :)
sleep 등을 이용하게 되면... 스케쥴링이 일어나서 다른 프로세스에게 우선권을 넘겨주고 idle 상태로 들어가기 때문에 CPU 자원을 좀 놀게 해줄 수 있습니다 ....
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~ 나 한줄기 바람처럼..
아... 용어선택에 잘못이 있었네요잉 바로 잡아주셔서 감사합니다 :)
... while(1) { if( 결과=특정날자 조건()) // 결과 : 특정날자 조건까지 남은 시간을 초로 환산한 값 { .... 수행할 작업 exit(0); } else sleep(결과); } ...
ctall wrote: ... while(1) { if( 결과=특정날자 조건()) // 결과 : 특정날자 조건까지 남은 시간을 초로 환산한 값 { .... 수행할 작업 exit(0); } else sleep(결과); } ...
결과 == 특정날짜조건 결과 >= 특정날짜 조건
무조건 cron을 쓰시라고 말씀드리고 싶군요.
아 만약 윈도우라면... 음 윈도우엔 cron같은 기능을 할 수 있는 거시기가 없을련가요?
윈도우즈도 제어판 -> 예약된 작업 가면 할 수 있지요.
sleep 이나 다른것 보다는 select를 사용하실 것을 권합니다.
특히 usleep과 같은 함수의 경우 thread unsafe인 경우가
많으므로 사용에 주의를 하시고요. 그리고 특정 날짜에만
어떤 이벤트를 수행하시고 싶으시다면 위의 SaNha 님의 답변처럼
cron에 등록해서 사용하시는 것이 훨씬 간단할 것입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
while(1) {...} 과 같이 하시면 거의 모든 CPU 자원을 끌어
while(1) {...} 과 같이 하시면 거의 모든 CPU 자원을 끌어다 쓴다고 보시면 되겠습니다.
이러한 방식을 polling 이라고 하지요 (cf. interrupt)
cron 을 쓰시면 어떨까요?
http://kldp.org/Translations/html/LAME/using-cron.html
훗, 못 믿겠나?
[quote="elien"]while(1) {...} 과 같이 하시면 거
busy waiting 이라고 하죠 :)
sleep 등을 이용하게 되면... 스케쥴링이 일어나서 다른 프로세스에게 우선권을 넘겨주고 idle 상태로 들어가기 때문에 CPU 자원을 좀 놀게 해줄 수 있습니다 ....
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
아... 용어선택에 잘못이 있었네요잉바로 잡아주셔서 감사합니다 :)
아... 용어선택에 잘못이 있었네요잉
바로 잡아주셔서 감사합니다 :)
훗, 못 믿겠나?
Re: 데몬으로 수행한 후 대기기간 동안에는 CPU사용하지 않는 방
Re: 데몬으로 수행한 후 대기기간 동안에는 CPU사용하지 않는 방
결과 == 특정날짜조건
결과 >= 특정날짜 조건
무조건 cron을 쓰시라고 말씀드리고 싶군요.아 만약 윈도우라면.
무조건 cron을 쓰시라고 말씀드리고 싶군요.
아 만약 윈도우라면... 음 윈도우엔 cron같은 기능을 할 수 있는 거시기가 없을련가요?
윈도우즈도 제어판 -> 예약된 작업 가면 할 수 있지요.
윈도우즈도 제어판 -> 예약된 작업 가면 할 수 있지요.
sleep 이나 다른것 보다는 select를 사용하실 것을 권합니다.
sleep 이나 다른것 보다는 select를 사용하실 것을 권합니다.
특히 usleep과 같은 함수의 경우 thread unsafe인 경우가
많으므로 사용에 주의를 하시고요. 그리고 특정 날짜에만
어떤 이벤트를 수행하시고 싶으시다면 위의 SaNha 님의 답변처럼
cron에 등록해서 사용하시는 것이 훨씬 간단할 것입니다.
댓글 달기