안녕하세요.
제가 프로그램을 하나 짜고 있습니다.
파일을 열어서 거기 있는 내용을 불러와서 어떠한 작업을 수행을 하는데요.
수행하던 중간에 stop버튼을 누르면 중지 시켜야 합니다.
문제는 파일을 열어 수행하는 루틴이 stop버튼을 눌렀을때 바로 멈춰야하는데, 문제는 stop버튼 자체가 바로 눌려지지 않는다는겁니다.
실제로는 눌려진거지만, 파일을 열어 수행하는 작업이 마구마구 돌고 있어 바로 적용이 안된다는거죠.
말로 설명하려니 힘드네요.
어떠한 흐름에서 중간에 무자르듯 탁! 하고 짤려야하는데, 스톱 버튼을 눌러도 한참있다 스톱이 된다는거지요.
이걸 바로 스톱되게 하려면 어떻게 해야할가요?
버튼의 동작과 파일로딩을 별도의 쓰레드로 두셔야 겠네요.
버튼 동작코드는 메인쓰레드의 루프에 두고 파일로딩은 별도의 쓰레드로 둡니다. 그러면 로딩중에 버튼을 누를 수 있게 됩니다.
어떤 플래그를 FALSE로 초기화해 둡니다. 이 변수는 정적 공유변수입니다.
스톱 버튼을 누르면 이 플래그를 TRUE로 세팅합니다.
파일은 어떤 포맷으로 되어 있을 거고 헤더 데이타 등으로 되어 있고 데이터는 어떤 패턴이 반복될 것입니다.
반복되는 패턴을 메모리로 적재하는 중에 플래그가 TRUE인지 점검해서 만약 TRUE면 이제까지 할당된 메모리를 모두 해제하고 쓰레드를 중지시킵니다.
그러면 적절한 처리가 되겠죠.
제가 대학에 다닐때는 이런 것을 실습하는 과정은 없었네요. 요즘은 좀 나아졌을 려나요?
대학원에 다닌다 해도 논문에 신경쓰다 보면 프로그래밍 실력은 기초수준에 머물다가 끝날 것 같더군요.