오라클 ProC 스레드 프로그램에 있어서....
글쓴이: unexpected / 작성시간: 화, 2006/01/31 - 9:19오전
새해에 복 많이 받으시고요...많이 웃는 한해 되세요..^^
스레드간 Context를 공유하지 않는 모델로 프로그램을 하려고 합니다.
매뉴얼을 보면 1번과 같이 스레드 생성전에 Context를 선언하고, 스레드 종료를 기다렸다가 ALLOCATE/FREE를 해주는 예제가 있고요..
BBS를 검색해서 참고하다보면 2번 같이 생성된 스레드 자체에서 Context를 선언/ALLOCATE 해주고, 스레드가 종료하기전에 스스로 FREE를 하는 모습들이던데....
둘 사이에 차이점은 없나요?
무한루프의 데몬을 만들려고 하다보니 스레드 조인을 해서 스레드 죽는것을 기다릴수가 없어서 2번의 모델로 프로그램을 하려고 하는데 문제가 없는지...고수님들의 조언을 부탁 드립니다.
-----------1번----------------- void thread_main() { EXEC SQL CONTEXT USE :ctx; /* 프로세싱 */ return; } int main() { sql_context ctx; EXEC SQL ENABLE THREADS; EXEC SQL CONTEXT ALLOCATE :ctx; EXEC SQL CONTEXT USE :ctx; EXEC SQL CONNECT :connect_info; /* 스레드 생성 : context 전달 */ crate_thread(); /* 스레드 종료 기다림 */ EXEC SQL COMMIT WORK RELEASE; EXEC SQL CONTEXT FREE :ctx; return(0); } ----------------------------------- --------------2번------------------ void thread_main() { sql_context ctx; EXEC SQL CONTEXT ALLOCATE :ctx; EXEC SQL CONTEXT USE :ctx; EXEC SQL CONNECT :connect_info; /* 프로세싱 */ EXEC SQL COMMIT WORK RELEASE; EXEC SQL CONTEXT FREE :ctx; return; } int main() { EXEC SQL ENABLE THREADS; while(1) { /* 소켓연결 기다림 */ crate_thread(); } return(0); } -------------------------------------
Forums:
1,2번의 차이점이라고 하면은 1번은 Context 하나만 사용하고..
1,2번의 차이점이라고 하면은 1번은 Context 하나만 사용하고.. 2번은 소켓 연결마다 Context를 설정하기 때문에 1번 보다는 병렬적으로 사용하실수 있다는 점....
소켓 연결이 많게 되면. 사용하실려는 Context에도 제한이 있을수 있습니다.
가능하시면..Context Poll을 만들어서..
DB처리시마다.. Context 요구하여 사용하는 방법이 좀더 좋을것 같습니다.
근데 2번 처리방법에서 process쪽이 무한이라면.. 소켓연결이 들어온 후에 생성된 쓰레드는 어떻게 되나요? 프로세스가 죽기 전까지 리소스가 허용하는 한까지 무한이 생성이 되면 문제가 생기지 않을까 합니다.
세부 사항은 모르지만. 문득 그런 생각이 들기에....
그럼 수고하세요...
댓글 달기