분류 전체보기2340 다중 쓰레드와 C++ 다중 쓰레드와 C++ Study 2004/12/13 12:09 http://blog.naver.com/truemonpark/40008750474 프로젝트에 다중 쓰레드를 도입하면 동기화나 종료 처리 등의 문제로 고려해야 할 사항들이 곱절 이상이나 늘어나게 된다. 그럼에도 불구하고 다중 쓰레드를 사용하는 이유는 프로그램의 성능을 향상시켜 주기 때문이다. 여기서 성능을 향상시켜 준다는 말이 무엇을 의미하는지는 좀더 생각해 볼 필요가 있다. 또한 어떻게 해야 성능이 향상되는지도 알아 볼 필요가 있다. 이현창 (아주대학교) 다중 쓰레드에 대해 공부해 본 적이 있다면 많은 책과 기사에서 다중 쓰레드의 사용을 될 수 있으면 자제하라고 권장한다는 사실을 알고 있을 것이다. 일단 프로젝트에 다중 쓰레드를 도입하면 동기.. 2008. 6. 2. Serial Port - RS232C A communication class for serial port Rating: Remon Spekreijse (view profile) February 8, 2000 In the newgroups there are many questions about serial communication so I thought: make it public! It's freeware. The only thing I expect from users is that they drop me a mail. All modifications on this class are free, but please let me know if it solves a bug or adds some good features. Also comment .. 2008. 6. 2. AfxBeginThread 사용하기 AfxBeginThread 사용하기 이렇게 한번 해 보세여... 저는 스레드를 사용할때 스레드 함수를 전역으로 놓구 합니다... 책에두 다 그렇게 나와 있던데여... ^^ cpp파일 맨위에 보면 헤더파일들 인클루드 하는 부분이 있죠?? 그아래에 함수 선언을 합니다... 그러면 전역함수로 사용할 수 있습니다... UINT threadfunction(LPVOID pParam); 이렇게 함수 선언을 해주고여... 사용하시면 됩니다.. 함수는 아래 처럼 해서여... void Cexercise2Dlg::OnBnClickedButton1() { AfxBeginThread(threadfunction,this); } UINT threadfunction(LPVOID pParam) { Cexercise2Dlg* pDlg .. 2008. 6. 2. Edit Clear Edit Clear 다음과 같이 버튼과 Edit 창을 만들고 Edit 창은 Edit Properties를 한 것처럼 설정을 한다. 꼭 이렇게 해야 하는것은 아니다. 유저가 원하는 방법으로 설정을 하여도 된다. m_EditClear 은 클래스 위자에서 설정을 하면 된다. Edit 창에 글자를 모두 지울 때는 다음과 같이 실행을 넣으면 된다. void CgtComPortTestDlg::OnClear() { // TODO: Add your control notification handler code here m_EditClear.Empty() UpdateData(FALSE) } 2008. 6. 2. RS232 통신 RS232C 표준 인터페이스의 하나로서 데이터를 직렬로 전송하며 대부분의 PC에 기본으로 장착되어 있다. RS232C 인터페이스 규격은 본래 데이터 단말장치와 모뎀(Modulator/Demodulator; 변,복조기)을 접속하기 위한 것으로 퍼스널 컴퓨터에서는 RS232C 규격의 일부를 사용하여 그 접속을 간략화하고 있다. 직렬전송방식의 개략 장점 - 배선 수가 작다. - 통신 프로그래밍 구현이 쉽다. - PC에 기본 장착되어 있다. 단점 - 병렬 전송에 비해 전송속도가 느리다. - 일대일 통신만 가능하다. 전기규격 RS232C의 전기적 특성은 아래와 같다. 항 목 RS232C 드 라 이 버 무부하 출력 부하 출력 단락 출력 전류 파워온시 특성 ≤ 25V 5V∼15V ≤500mA ≥300Ω 리 시 버 입.. 2008. 6. 2. MFC Thread 완전정복 ( 마지막 ) -Event SetEvet(): 이벤트를 signaled 상태로 설정한다. ResetEvent(): 이벤트를 non-signaled상태로 설정한다. PulseEvent(): 한번의 operation으로 셋과 리셋을 수행한다. 블록킹된 스레드는 이벤트가 signaled일때 해제(릴리즈)되어 나온다. 하나의 스레드가 CEvent::Lock으로 블록킹되어 이벤트가 set되기를 기다리고 있다. 다른 스레드가 이벤트를 set하면 기다리던 스레드는 릴리즈된다. 모든 기다리고 있는 스레드들은 이벤트가 set될때 릴리즈 된다. 윈도우즈는 2개의 다른 이벤트를 제공한다. 1.오토리셋 이벤트 블록킹된 스레드가 해제되면, 자동적으로 non-signaled로 리셋된다. 2.수동리셋 이벤트 블록킹된 스레드가 해제되면, 자동적으.. 2008. 6. 2. MFC Thread 완전정복 3 - 동기화 MFC Thread 완전정복 3 - 동기화Soft-Ware 2007/07/25 15:41 - symmetric multiprocessing ( 대칭 다중 처리,SMP ) 서로 다른 스레드들을 서로 다른 프로세서에 할당해서 동시에 둘이상의 스레드들을 실행한다. 스케쥴러는 다수의 실행 스레드들을 한번에 실행하고 있는 것처럼 만들기 위해 가능한 효율적으로 이들 사이에 cpu시간을 나누는것이 목표이다. - Thread Syncronization ( 스레드 동기화 ) 윈도우즈는 4종류의 동기화 개체를 지원한다. -- Critical Sections -- Mutexes -- Events -- Semaphores 1. Critical Sections ( 임계영역 ) - 가장 간단한 형식의 동기화 개체 - 배타적 ac.. 2008. 6. 2. MFC Thread 완전정복 2 - Thread 종료하기 --UI Thread call AfxEndThread. post WM_QUIT.( ::PostQuitMessage ) (쓰레드 종료함수 사용시 주의할것은 쓰레드 내부에 메모리를 동적할당(new,malloc)해놓고 delete를 안해서 메모리 릭이 날 염려가 있다. 그래서 가급적이면 쓰레드 함수 리턴으로 종료하는 것이 낫다.) 위의 함수들을 호출한 후 한번 제대로 종료됬는지 확인해보라 DWORD dwExitCode; ::GetExitCodeThread (pThread->m_hThread, &dwExitCode); 만약 여전히 살아 있다면 dwExitCode = STILL_ACTIVE(0x103) 으로 되어 있을테다. - CWinThread 개체 자동 삭제하기 AfxBeginThread 로 스레드 생성할 경.. 2008. 6. 2. MFC Thread 완전정복 1(펌) Threads and Thread synchronization Threads MFC는 2종류의 쓰레드로 구분할 수 있다. 1. user interface threads 메시지 루프가 존재한다. 윈도우를 만들고 이들 윈도우로 보내진 메시지들을 처리한다. 어플리케이션안에 또하나의 어플리케이션(ui-threads)을 만드는것과 비슷하다.일반적으로 별개로 움직이는 다중 윈도우를 만들때 많이 사용되어 진다. 2. worker threads 직접적으로 메시지를 받지 않고 백그라운드에서 동작되기 때문에 윈도우나 메시지루프들이 필요가 없다. %이 둘간의실질적인 차이는 아직 잘모르겠다. 좀 더 학습하도록 -Creating a Worker ThreadAfxBeginThread함수는 ui-thread,worker threa.. 2008. 6. 2. 728x90 이전 1 ··· 257 258 259 260 다음