[[TableOfContents]] == 개요 == * 종료! == 참가자 == * [신형철], [박인서], [성훈] == 진행 시간 == * 14시 30분 ~ 17시 == 진행 예정 내용 == * 다소 중요하다고 생각된 내용은 [[HTML(보라색 볼드(굵게))]] 처리하였습니다. * #15. BCL Part.3 * [[HTML(FileStream, FileMode)]] * [[HTML(File 클래스와 FileInfo 클래스)]] * [[HTML(Directory 클래스와 DirectoryInfo 클래스)]] * [[HTML(Path 타입)]] * #16. BCL Part.4 * [[HTML(Thread)]] * [[HTML(Thread 상태 제어)]] * [[HTML(전경 스레드와 배경 스레드)]] * [[HTML(Thread 동기화 처리 - Monitor를 통한 동기화)]] * [[HTML(Thread 동기화 처리 - lock 예약어를 통한 동기화)]] * [[HTML(원자적 연산과 Interlocked 타입)]] * [[HTML(ThreadPool)]] * [[HTML(Thread 동기화 처리 - EventWaitHandle을 통한 동기화)]] * [[HTML(동기 호출과 비동기 호출)]] * #17. C# 5.0으로 올라서기 * 호출자 정보(Caller Information) * [[HTML(async/await 예약어)]] * [[HTML(Task 타입 (C# 4.0))]] * Task와 ThreadPool의 QueueUserWorkItem (C# 4.0) * [[HTML(await와 병렬 처리)]] * [[HTML(catch 블록에서의 await (C# 6.0))]] == 진행 == === 내용 요약 === ==== 15. BCL Part.3 ==== * 파일에 대해 입출력 작업을 하려면 파일 스트림을 열어야 한다. * FileMode, FileShare, FileAccess 등을 통해 파일 스트림에 파일의 개방 방식, 수정 방식, 공유 방식등을 제어할 수 있다. * File 정적 메서드와 FileInfo 인스턴스 메서드를 사용하면 대부분의 파일 I/O 작업을 손쉽게 처리할 수 있다. * Directory 정적 메서드와 DirectoryInfo 인스턴스 메서드를 사용하면 대부분의 폴더 I/O 작업을 손쉽게 처리할 수 있다. * Path 정적 메서드를 통해 파일/폴더 경로와 그 이름에 대한 작업을 손쉽게 처리할 수 있다. ==== 16. BCL Part.4 ==== * 스레드(Thread)는 CPU의 명령어를 수행하는 스케줄링 단위를 말한다. * Join, Sleep 등의 메서드를 통해 스레드의 상태를 제어할 수 있다. * 전경 스레드(Foreground Thread)는 프로그램 종료에 영향을 주지만, 배경 스레드(Background Thread)는 프로그램 종료에 영향을 미치지 않는다. * Monitor 클래스를 통해 다중 스레드에 대한 동기화 처리를 지원할 수 있다. * Monitor 클래스 사용 패턴을 단순화시킨 lock 예약어를 통해 동기화 처리를 지원할 수 있다. * 더 이상 나뉠 수 없는 원자적 연산에 대해서는 Interlocked 타입을 통해 동기화 처리를 지원할 수 있다. * ThreadPool은 재사용 가능한 스레드들의 집합을 얘기하며, 이 Pool을 통해 다중 스레드를 처리할 수 있다. * EventWaitHandle을 통해서도 스레드에 대한 동기화 처리를 지원할 수 있다. * 동기 호출은 호출 시 제어가 차단되지만, 비동기 호출은 제어가 차단되지 않고 별도의 ThreadPool에서 스레드를 얻어와서 실행한다. ==== 17. C# 5.0으로 올라서기 ==== * 호출자 정보를 사용하면 파일명, 호출 메서드 이름, 라인 번호를 얻어낼 수 있다. * async/await 예약어를 통해 동기 호출과 비슷하지만 비동기 호출인 코드를 작성할 수 있다. * Task 타입을 사용하여 ThreadPool에서 스레드를 얻어와 실행하는 코드를 작성할 수 있다. * Task 타입은 QueueUserWorkItem과 달리 반환된 결과값을 사용할 수 있다는 중요한 차이점이 있다. * C# 6.0에서는 catch 블록에서도 await 키워드를 적용시킬 수 있다. === 그 외 === == 덧글 == -------------------------------- [CS]