System.Threading Process / Thread SD50 – C# & .NET Platform.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
10. 예외 처리.
11장 스레드.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
제8장 쓰레드 프로그래밍.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
윤 홍 란 다이알로그(대화상자) 윤 홍 란
어서와 Java는 처음이지! 제16장 스레드.
Chapter 4 Multi-Threaded Socket
Lab 2 Guide: 교재 3장 그래픽 예제 ( 쪽) - 펜과 브러시로 그리기 - 튀는 공
Java 10장. 다중 스레드 public class SumTest {
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
5장. 참조 타입.
스레드란? 멀티 태스킹(muli-tasking)는 여러 개의 애플리케이션을 동시에 실행하여서 컴퓨터 시스템의 성능을 높이기 위한 기법 그림23-1. 병철 처리의 예.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
Sungkyunkwan University OS Project Dongkun Shin
자바네트워크 제2주 실습 네트워크기초, 스레드.
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
10장. 예외처리.
Subject : Thread Written by: 김형근,류명운.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
CHAP 12. 리소스와 보안.
13. 연산자 오버로딩.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
CHAP 13. 방명록 만들기 실습.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
Go Lang 리뷰 이동은.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자바 5.0 프로그래밍.
ADO.NET (SqlConnection, SqlCommand)
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
CHAP 21. 전화, SMS, 주소록.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
( Windows Service Application Debugging )
Chapter 17. 스레드.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
9 브라우저 객체 모델.
다자간 채팅프로그램 김형도 허영민
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Thread.
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
제8장 쓰레드 프로그래밍.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
CODE INJECTION 시스템B 김한슬.
Power Java 제23장 스레드.
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
6 객체.
2. 프로세스 B 안우진 - 운영체제 -.
중간 결과 보고 ( Server & Client )
Presentation transcript:

System.Threading Process / Thread SD50 – C# & .NET Platform

개요 Thread 란? 장점 단점 Processor Time을 할당하는 최소 단위 생성시 Process보다 저렴한 비용 동시에 여러 작업을 수행 가능 Thread간의 통신이 용이 단점 OS의 부하증가 Debugging의 복잡성 증가

Single Thread 수행시간 작업1 작업2 작업3

Multi Thread 수행시간 작업1 작업2 작업3

Context Switch 실행이 끝난 thread의 context를 저장하고 ready thread로 전환하는 과정 높은 priority를 가진 thread가 ready thread가 된 경우 실행중인 thread가 대기상태로 될 필요가 있는 경우

전형적인 Win32 Process 단일 Win32 프로세스 공유 데이터 쓰레드 A 쓰레드 B TLS 호출 스택 TLS

단일 .NET 프로세스 AppDomain A AppDomain B 단일 .NET 프로세스 공유 데이터 공유 데이터 쓰레드 A TLS TLS TLS 호출 스택 호출 스택 호출 스택

System.Threading Namespace 멀티스레딩 지원 클래스와 인터페이스 제공 ThreadPool Class – 스레드 그룹관리 Timer Class – 일정시간뒤 호출 Mutex Class – 스레드간 상호배제를 위한 동기화 그 외 스레드 스케쥴링, Wait 통지, dead-lock 해지를 위한 클레스 제공

System.Threading.Thread Class 프로세스는 프로그램 코드의 실행 부여를 위한 하나이상의 스레드생성 가능 실행될 코드는 ThreadStart delegate로 지정 스레드가 존재하는 동안 스레드는 ThreadState로 정의되는 상태를 가진다. 스레드를 위하여 ThreadPriority로 정의되는 스케쥴링 우선 레벨을 지정할 수 있다.

System.Threading.Thread Class public Thread( ThreadStart start ); start - A ThreadStart delegate that references the methods to be invoked when this thread begins executing. To schedule the thread for execution, call the Start method.

Thread Class Methods public static Thread CurrentThread {get;} public static void Sleep(int); public void Suspend(); public void Resume(); Etc…

Demo System.Threading.Thread Class DzSimpleThread Thread.CurrentThread.GetHashCode ()

실습과제 Thread Class를 이용하여, 화면에 초단위로 현재시간 표시와 동시에, 10초마다 새로운 스레드에서 메시지 박스 띄우기

System.Threading.Timer Class Timer 와 연계된 메소드는 TimerCallback delegate 로 표현한다. 연계된 메소드는 기본스레드가 아닌 새로운 스레드를 자동 생성하여 실행한다. 타이머가 생성시, due time과 period를 지정 0, Infinite Change메소드로 위의 값 변경 또는 타이머를 disable 로 만들 수 있다. 더 이상 타이머가 필요없을때, Dispose 메소드로 타이머의 리소스를 해제

System.Threading.Timer Class public Timer(TimerCallback, object, int, int); public Timer(TimerCallback, object, long, long); public Timer(TimerCallback, object, TimeSpan, TimeSpan); public Timer(TimerCallback, object, uint, uint);

Demo System.Threading.Timer Class DzSimpleTimer

실습과제 Timer Class 를 이용하여 10회동안 10초에 한번씩 화면에 메시지 박스 출력하기 (Form/Console)

Multi-Thread 멀티스레딩은 어플리케이션의 수행능력 향상 스레드간 공유데이터의 처리문제 발생 예측불가능 버그 발생 위험성 존재

쓰레드 동기화 lock(this) in C# System.Threading.Monitor Monitor.Enter(this) / Monitor.Exit(this) Try{} finally{} 필수 왜냐하면, 진입스레드의 suspend = 무한루프 System.Threading.Interlocked 안전한 방법으로 변수의 값을 1씩 증가/감소

Demo 멀티스레드에서의 문제점 (동기화문제) DzMultiThreadProb

Demo 동기화 사용 예제 lock Keyword System.Threading.Monitor System.Threading.Interlocked Critical-Section(임계영역) Mute X(상호배제) Semaphore(제안(최대) 스레드) Event(이벤트 발생시 들어감);

실습과제 멀티스레드를 이용한 예제

Thread Debugging System.Diagnostics.Debug Class - Debug.WriteLine DebugView (http://www.sysinternals.com)

Demo Debug.WriteLine / DebugView 이용 예제 직접 설명하며 Coding

실습과제 스레드를 100개 만들어 스레드 이름에 인덱스 번호를 붙이고, 스레드 함수 내에서 Debug.WriteLine 을 이용하여 디버깅 정보 남기기