Microsoft MVP성태의 닷넷 이야기
p654 의 비동기 관련 설명 [링크 복사], [링크+제목 복사],
조회: 12394
글쓴 사람
윤종현 (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)
383정성태5/30/20068403            답변글 [답변]: [답변]: [답변]: ATL Event에서 스크립트가 값을 다시 돌려주는 방법은?
378guest5/26/20067966managed 와 unmanaged 의 차이가 뭐져?
379정성태5/26/20068277    답변글 [답변]: managed 와 unmanaged 의 차이가 뭐져? [1]
384guest5/30/20067750        답변글 감사합니다.
376노기도5/16/20068069vb6의 GetObjectContext 를 2005에서는 어떻게 사용해야 하나요? [3]
375이덕희5/15/20069953SmartClient 강좌를 보고... 엑박이 나옵니다... [2]파일 다운로드1
3745/12/20068907데이타셋을 레코드셋으로 변경하는 방법...... [2]파일 다운로드1
373아폴론5/12/20067875스마트 클라이언트.. 강좌대로 했는데.. 이런 에러가 나네요. [1]파일 다운로드1
372정보문5/11/20068474DHCP를 쓰는 이유 [1]
366임경훈5/8/20068299지정된 웹서버에서 ASP.NET 버전 1.1이 실행되고 있지 않아 ASP.NET 웹 응용 프로그램 또는 웹서비스를 실행할수 없습니다 [2]
365꿈의공장5/8/20068142스마트 클라이언트 사용시 안보이는 현상 [1]
364조준현5/3/200676152.0 스마트클라이언트에서.. public 메소드등을 스크립트에서 접근하는 방법이..? [2]
363혁이5/2/200610230스마트 클라이언트에 farpoint 컨트롤 올리기 2번째 질문입니다 [1]파일 다운로드1
361혁이4/28/20068526스마트 클라이언트에 FarPointSpread를 올렸는데요. 보이지가 않습니다..음.. [1]
360꿈의공장4/28/20068759스마트클라이언트와 오라클에 연결 [1]
359박호성4/28/20067932ASP.NET에서 COM Object를 사용하려면? [1]
358임동오4/27/20068474ASP -> COM+ Proxy 연결문제입니다. 151초동안 아무응답없습니다. ㅠㅠ
362정성태4/30/20069705    답변글 [답변]: ASP -> COM+ Proxy 연결문제입니다. 151초동안 아무응답없습니다. ㅠㅠ
354노기도4/24/20067820시스템 구성에 대해 의견을 듣고 십습니다.
355정성태4/25/20067892    답변글 [답변]: 시스템 구성에 대해 의견을 듣고 십습니다.
356노기도4/25/20067239        답변글 [답변]: 귀찮게 해드려 죄송스럽지만.
357정성태4/25/20067432            답변글 [답변]: [답변]: 귀찮게 해드려 죄송스럽지만. [1]
352산들바람4/19/20067267이번겨울방학때세도나를 여행하려구하는데요,,,
353정성태4/20/200612584    답변글 [답변]: 이번겨울방학때세도나를 여행하려구하는데요,,,
351오기4/18/20067099aspx [2]
350유지연4/17/20067913smartclient DB connection관련 질문 입니다. [2]파일 다운로드1
... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...