비주얼 포트란을 코딩한 후 실행을 하면 대개 도스창 모양의 검은색 창이 뜨면서
커서가 깜빡입니다. 그러다가 계산이 종료되면 아무 버튼이나 누르라는 문장이
뜨는데요.
제가 계산을 위해 어떤 실행 파일을 하나 돌리고 cpu 점유율을 보면 55% 안팎이 되더군요.
이때 다른 프로그램을 하나 더 돌리면 점유율이 100%가 되면서 다른 작업을 하려 하면
컴퓨터가 너무 느려집니다. 그냥 기다리면 되지만, 중간에 급한 작업을 해야 할 때
실행 창에 어떤 명령을 줘서 일시 정지하는 기능을 만들 수 없을까 해서 질문 올립니다.
꽤 긴 계산을 하고 있는데 그냥 Ctrl+C 로 종료시키기엔 여태까지 한 계산이 아깝기 때문에
중단보다는 일시 정지가 좋을 것 같습니다.
혹시 아시는 분 계신가요?
정해놓은 iteration 에 도달하면 데이터를 저장하는 것은 어떨까요? 시간이 오래 걸리는 계산일 경우 불의의 사고(?)를 위해서 데이터 저장을 하곤 합니다. 물론 프로그램을 중지 시키더라도 데이터를 읽어서 그 시점부터 다시 돌리면 되니까요. binary 로 저장을 하면 읽고 저장하는데 시간이 많이 걸리지 않습니다. 설마 오랜 시간 계산을 하는 프로그램에 이런 루틴이 없는 건 아니겠지요? ^^
첫댓글 DOS창이 활성화되어 있을 때, pause button을 누르면 일시 정지됩니다. 그리고, program내에서도 pause라는 명령어를 사용하면 일시 정지됩니다. 다시 실행하기 위해서는 아무 키나 누르면 됩니다.
정해놓은 iteration 에 도달하면 데이터를 저장하는 것은 어떨까요? 시간이 오래 걸리는 계산일 경우 불의의 사고(?)를 위해서 데이터 저장을 하곤 합니다. 물론 프로그램을 중지 시키더라도 데이터를 읽어서 그 시점부터 다시 돌리면 되니까요. binary 로 저장을 하면 읽고 저장하는데 시간이 많이 걸리지 않습니다. 설마 오랜 시간 계산을 하는 프로그램에 이런 루틴이 없는 건 아니겠지요? ^^
dump 라고 하죠
물론 반복 계산을 하면서 중간에 데이터를 저장하도록 코딩했습니다. 그정도는 기본 센스!! 그런데 도스창 활성화되어 있을 때 pause 버튼 눌러도 일시 정지 안되는데요. 저만 그런 건가요? 정말 안됩니다.
pause 버튼이 금방 먹히는 것은 아니니까 pause 버튼을 누르고 한참 기다려 보세요. 계산 프로그램 같은 경우 즉각적인 반응을 기대하기 어렵습니다.
pause는 Fortran95에서 삭제되었고, 더이상 사용하는 것을 권장하지 않습니다.
read (*, '(a)') dummy
처럼 문자하나를 그냥 입력받도록 하는 것을 권장합니다... 엔터치면 되니까요.
원 질문자가 원하는 프로그래밍은
한 쓰레드는 계산을 하고, 하나는 표준입력을 기다리는..멀티쓰레드 프로그래밍을 해야하는데..
순수하게 포트란만으론 멀티쓰레드 프로그래밍이 없습니다.
비주얼 포트란에서 제공하는 루틴은 윈도API를 불러 올 수 있기때문에 가능은 합니다.
또는 c언어와의 mixing을 하는 다른 방법으로 구현해야합니다.