Microsoft MVP성태의 닷넷 이야기
p654 의 비동기 관련 설명 [링크 복사], [링크+제목 복사],
조회: 21424
글쓴 사람
윤종현 (oscar.yoon at gmail.com)
홈페이지
첨부 파일
 

p654 의 비동기 처리 확인을 위해 스레드 ID를 출력하는 내용이 있는데요,

byte[] buf = new byte[fs.Length];

Console.WriteLine("Before ReadAsync: " + Thread.CurrentThread.ManagedThreadId);

await fs.ReadAsync(buf, 0, buf.Length);

Console.WriteLine("Before ReadAsync: " + Thread.CurrentThread.ManagedThreadId);

string txt = Encoding.UTF8.GetString(buf);
Console.WritLine(txt);

이 코드 설명을 await 호출 전과 후의 스레드 ID가 다르다라고 하셨는데, 좀 이상해서 직접 실행해봤더니, 같게 나오더라고요. fs.ReadAsync 만 다른 스레드에서 호출되고, 이후의 실행은 fs.ReadAsync 가 처리되고, 원래 호출 스레드(여기서는 메인 스레드)에서 실행되어야 하지 않을까요? 그렇지 않으면, await 호출 이후의 아래 쪽 내용들에서 접근하는 메인 스레드의 모든 데이터에 대해 락을 걸어야 할텐데요.









[최초 등록일: ]
[최종 수정일: 1/10/2014]


비밀번호

댓글 작성자
 



2014-01-10 01시20분
혹시 테스트를 Winform(또는 WPF) 프로그램에서 하셨나요?
정성태
2014-01-21 05시56분
이상하네요. 저는 ThreadId 값이 다르게 출력되던데요.
Nari Kim
2014-01-21 09시27분
책에서와 같이 콘솔 응용 프로그램에서 하는 경우 스레드 ID가 다르게 나오는데요. WPF/WinForm 등에서 테스트하면 스레드 ID가 동일하게 나올 수 있습니다. 그에 대해서는 다음의 글을 참고하세요.

async/await 사용시 hang 문제가 발생하는 경우
; http://www.sysnet.pe.kr/2/0/1541
정성태

... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
407김용국6/21/200613310                답변글 [답변]: 다시한번 문의드립니다!
398김성호6/17/200613898IE프로그래밍 관련하여 질문이
400정성태6/19/200613668    답변글 [답변]: IE프로그래밍 관련하여 질문이 [5]
396guest6/13/200613467CallByName 을 어떻게 처리해야 할지 ....조언 부탁합니다.
397정성태6/15/200612980    답변글 [답변]: CallByName 을 어떻게 처리해야 할지 ....조언 부탁합니다.
399guest6/19/200612576        답변글 [답변]: [답변]: CallByName 을 어떻게 처리해야 할지 ....조언 부탁합니다.
392이상식6/9/200613413스마트클라이언트 실행환경 관련 질문입니다.
394정성태6/12/200613324    답변글 [답변]: 스마트클라이언트 실행 환경 관련 질문입니다.
395이상식6/12/200613605        답변글 [답변]: [답변]: 스마트클라이언트 실행환경 관련 질문입니다.
391심현철6/9/200613571Win32 platform과 .NET platform간의 성능이 어느정도 차이가 날까요?
393정성태6/12/200613303    답변글 [답변]: Win32 platform과 .NET platform간의 성능이 어느정도 차이가 날까요?
390이현행6/6/200613495정말 답답해서 그렇습니다. [1]
389임경훈6/2/200623366sql과 oracle 사용시 파라메타 차이점
387창민 6/1/200615301안녕하세요.문제가 걸렸는데 해결기미가 안보여서 답답해서.. 혹시 아시면 문제 채질이라도...파일 다운로드1
388정성태6/1/200614900    답변글 [답변]: 안녕하세요.문제가 걸렸는데 해결기미가 안보여서 답답해서.. 혹시 아시면 문제 채질이라도...
385오윤섭5/31/200612556SmartClient 동적호출
386정성태6/1/200613039    답변글 [답변]: SmartClient 동적 호출
380윤용한5/29/200613042ATL Event에서 스크립트가 값을 다시 돌려주는 방법은?파일 다운로드1
381윤용한5/29/200612748    답변글 [답변]: ATL Event에서 스크립트가 값을 다시 돌려주는 방법은?
382윤용한5/29/200613302        답변글 [답변]: [답변]: ATL Event에서 스크립트가 값을 다시 돌려주는 방법은?
383정성태5/30/200613644            답변글 [답변]: [답변]: [답변]: ATL Event에서 스크립트가 값을 다시 돌려주는 방법은?
378guest5/26/200613071managed 와 unmanaged 의 차이가 뭐져?
379정성태5/26/200613344    답변글 [답변]: managed 와 unmanaged 의 차이가 뭐져? [1]
384guest5/30/200612890        답변글 감사합니다.
376노기도5/16/200613081vb6의 GetObjectContext 를 2005에서는 어떻게 사용해야 하나요? [3]
375이덕희5/15/200615291SmartClient 강좌를 보고... 엑박이 나옵니다... [2]파일 다운로드1
... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...