Microsoft MVP성태의 닷넷 이야기
p654 의 비동기 관련 설명 [링크 복사], [링크+제목 복사],
조회: 12103
글쓴 사람
윤종현 (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
정성태

... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
728정성태11/3/20079925    답변글 [답변]: 시스템 설계에 대한 문의드립니다. [2]
726한귀순10/24/200710629SQL 2005 Express 사용시.. [3]
725이방은10/23/200710629성태님 GDI+질문있어요.. [2]
724clic...10/17/200711904clickonce 작동시 무반응입니다. [1]
722한귀순10/11/200715591Internet Explorer 7.0 에서 ClickOnce Error [3]
721이카루스10/5/200711614WCF 질문드립니다.
723정성태10/14/20079956    답변글 [답변]: WCF 질문드립니다.
720limj...10/5/200711409인증서/스마트 카드에 기반한 Managed Card - STS 구현 질문 [2]
718DJ.처리10/2/200719852[VS.NET 2008] 스마트클라이언트 게시 오류...도와주세요~ [2]파일 다운로드2
716guest9/28/200714981실행시간이 긴 com+ 객체가 죽는거 같습니다. 어떻게 해야 할지.... [3]
713하민규9/19/200710373VC++ 6과 Vista UAC ..파일 다운로드1
715정성태9/28/200711240    답변글 [답변]: VC++ 6과 Vista UAC ..
711술푼어둠이9/17/200710343사설 IP 사용 문제?? [1]파일 다운로드1
709한귀순9/14/200710116asp.net 에서의 paging 관련. [2]
708이준영9/13/200712103마우스 커서의 움직이는 속도 알아내는 좋은 방법은?
712정성태9/17/200710607    답변글 [답변]: 마우스 커서의 움직이는 속도 알아내는 좋은 방법은?
707hatu...9/10/200710619window2000과 ssl 그리고 frame [2]
701소쿠리9/5/200710739Get 으로 넘긴 한글 문자열 Respose.AddHeader 에서 filename 으로 사용시 깨짐. [1]
699유현기9/3/200710696[질문1]스마트 클라이언트에서 웹의 변수를 스마트 클라이언트에서 받아쓰기(제발도와주세요 ㅠ.ㅠ)파일 다운로드1
700정성태9/3/20079866    답변글 [답변]: [질문1]스마트 클라이언트에서 웹의 변수를 스마트 클라이언트에서 받아쓰기(제발도와주세요 ㅠ.ㅠ)
696clev...8/31/200710202Exe COM으로 만들면 혹시 Bridge dll없이도 권한 상승이 가능한가요? [1]
702clev...9/5/20079836    답변글 [답변]: Exe COM으로 만들면 혹시 Bridge dll없이도 권한 상승이 가능한가요?
695스마일8/30/200710001Visaul Studio 2005에서 디버깅이 안되요...ㅠㅠ [1]
694이호정8/29/200710018[CardSpace 관련 질문] 정리해 좋으신 글 잘 보았습니다.
698정성태9/1/20079995    답변글 [답변]: [CardSpace 관련 질문] 정리해 좋으신 글 잘 보았습니다.
704이호정9/6/200710530        답변글 답변해주신 내용 잘 봤습니다. ^_^b
... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...