C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[73081] Re:Re:Re:[답변]thread 와 process
라스코니 [chouoo] 4076 읽음    2015-10-13 15:31
가능한 방법입니다.

프로세스(또는 thread) 에 in-duct 하고 out-duct 를 달고 서로간에 붙일 수 있습니다.
UDP를 쓴 다면 udp in-duct 하고 udp out-duct 가 되겠죠. 제 생각에는 보다 portable 한 구현 방법이라고 봅니다.



님이 쓰신 글 :
: 한가지 더 의문점이 생겨서 질문드리려고 하는데요.
:
: 프로세스들사이에 세어메모리를 사용하지 않고
: UDP통신으로 데이타를 주고 받는것은 어떨까 생각중인데요.
:
: 혹 다른 문제점이 있을까요?
:
: 질문만 계속 하게 되네요. 그럼, 수고하세요.
:
: 스머팩트 님이 쓰신 글 :
: : 0. 200개의 프로세스(Thread)
: :
: :   이렇게 프로그램을 설계해야 할 경우가 가끔 생기죠
: :   예를들어 ARS와 같은 경우 하나의 프로세스가 하나의 채널을 담당하게 되죠
: :   200개가 동시에 수행되더라도, 제어를 잠시하고 쉴 때가 많아서 잘 돌아갈겁니다.
: :
: : 1. Process와 Thread
: :
: :   Unix의 경우 예전(80,90년대) 프로그래머들은 분산 프로세스 모델을 많이 사용했지만
: :   요즘은 Unix(Linux,Osx), Windows, Java 모두 Thread를 많이 사용하는것 같습니다.
: :
: :   구현 측면에서 전체적으로 Thread가 프로세스 보다는 2배 이상(느낌상) 신경쓸 일이 많습니다.
: :   (개인적인 생각이므로 다른 분은 아니라고 할 수 도 있습니다.)
: :   그러나 프로세스간의 통신측면에서는 Thread가 Process보다는 좀 편리한것 같습니다.
: :
: : 2. Process생성
: :
: :   프로세스 생성은 배치파일로 해도 되고 WinExec명령으로 해도 됩니다.
: :   그러나 보다 프로그램 적인 방법으로 한다면 CreateProcess() 함수를 사용해야합니다.
: :   CreateProcess() 함수를 사용하면 다양한 옵션으로 프로세스를 시작 시킬 수 있습니다.
: :
: :   보다 자세한 내용은 첨부된 소스의 ExecApplication() 함수를 확인해 보시기 바랍니다.
: :
: : 3. Process종료
: :
: :     200개의 핸들을 배열에 기억해 두었다가 다음과 같은 명령으로 강제 종료 시킬 수 있습니다.
: :
: :     TerminateProcess(handle, 0);
: :
: : 4. 공유메모리
: :
: :   아주 심플한 공유메모리 유닛소스도 첨부파일에 있으니 참고하세요.
: :   참고용이니 인터넷에서 검색해 보시고 세밀하게 다듬으시기 바랍니다.
: :   ("C++Builder6.0 / Examples / Apps / IpcDemo" 예제에도 SharedMemory에 대한 구현이 있습니다.)
: :
: :   공유메모리에서 주의할 것이 하나 있는데 공유메모리가 공통의 메모리를 접근하는 것이지만, 메모리가 단일한것은 아닙니다.
: :   MapViewOfFile()함수를 사용 하면 View할 메모리 만큼 로컬 메모리가 소모 됩니다.
: :   결론적으로 아주큰 메모리를 접근 할 때는 조금씩 View를 만들었다가 해제 했다가를 반복해야 합니다.
: :   (사실 그렇게 쓸 일은 별로 없습니다.)
: :
: : 5. 빌더에서 프로세스를 생성하면 UI가 있어야 하는것 아닌지요.
: :  
: :   프로세스 관리 프로그램은 UI(VCL Application)로
: :   200개의 프로세스는 Console로 만드시는 것이 좋을것 같습니다.
: :   (C++Builder의 File > New > Other... > Console Wizard)
: :
: :   위에 설명된 CreateProcess()는 프로세스 생성시에 윈도우를 감추는 기능이 있습니다.
: :   콘솔로 만들어 테스트와 디버깅을 편하게 하신다음,
: :   매니저 프로세스가 프로세스를 생성할 때 Console을 감추게 하면 됩니다.
: :
: : 6. 서비스 프로그램
: :
: :   C++Builder의 경우 서비스 프로그램을 만들기 아주 쉬운 편이지요
: :   서비스 프로그램으로 만드셔도 되지만, 개발중에는 서비스 프로그램을 고려하지 않을 것을 추천합니다.
: :   자동로그인과 시작프로그램으로 하는게 좀 편할것 같습니다.
: :   개발을 마무리 하시고 시간 남을 때 한번 도전해 보실것을 권해 봅니다.
: :
: :
: : [예제설명]
: :
: : - 첨부된 소스와 실행 파일은 C++Builder 6.0으로 작성된 것입니다.
: : - IvrManager.exe는 200개의 프로세스를 관리하는 프로그램 입니다.
: : - ArsFaxClient.exe는 200개가 될 프로그램 입니다.
: : - ArsFaxClient.exe는 두개의 인자를 받습니다.
: :
: :   하나는 Ars인지Fax인지를 구분 하는 것이며(A 또는 F)
: :   두번째는 채널 번호 입니다.(0~199)
: :
: :   ex1) ArsFax.exe A 10
: :   ex2) ArsFax.exe F 11
: :
: : - 관리프로그램(IvrManager.exe)는 200개의 프로세스를 Console이 보기게/안보이게 생성할 수 있습니다.
: :   각각을 수행해 보시면 안보이게 실행 하는 것이 UI지연을 방지할 수 있다는 것을 알 수 있습니다.
: :
: : - IvrManager.exe를 실행해서 버튼 눌러보시면 다 아실듯 합니다.
: :
: :
: : ----------------------------------------------------------------------
: :
: : 하안인 님이 쓰신 글 :
: : :
: : : 200여개의 쓰레드를 생성하여
: : :
: : : 작업을 한다면 메인쓰레드나 어떤 쓰레드에서 데드락이 걸리면
: : :
: : : 모든 작업이 데드락이 걸려서
: : :
: : : process 를 200개 생성해서 작업하려고 하는데
: : : process 200개는 어떻게 생성해야 하는지요.
: : :
: : : 200개의 process 는 thread와 마찬가지로 화면이 없고
: : : 백그라운드에서 작업하면 되는데 
: : :
: : : 어떻게 해야 하는지 몰라서요.
: : :
: : : 하고 싶은것은
: : :
: : : 200개의 쓰레드가 아닌 프로세스를 생성하고
: : : 200개의 프로세스에서 실행되는 값을 공유메모리를 사용해서 현황을 보여주려고 합니다.
: : :
: : : 빌더에서 프로세스를 생성하면 UI가 있어야 하는것 아닌지요.
: : :
: : : 아니면 서비스 프로그램으로 만들어야  하는지..
: : :
: : : 자문 구합니다.
: : :
: : : 두서 없이 적었습니다.
: : :

+ -

관련 글 리스트
72948 [질문]thread 와 process 하안인 4004 2015/09/02
72957     Re:[답변]thread 와 process 스머팩트 4052 2015/09/05
73079         Re:Re:[답변]thread 와 process 4086 2015/10/12
73081             Re:Re:Re:[답변]thread 와 process 라스코니 4076 2015/10/13
72960         Re:Re:[답변]thread 와 process 3889 2015/09/07
72949     Re:[질문]thread 와 process 라스코니 4117 2015/09/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.