Microsoft MVP성태의 닷넷 이야기
비동기 호출의 병렬 처리 질문입니다. [링크 복사], [링크+제목 복사]
조회: 1473
글쓴 사람
영귤
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)


제가 C#9 책밖에 없지만^^
딱히 정오표에도 없는 듯 하여 질문을 드려 봅니다.

[1] 1.1.10 C#과 닷넷 프레임워크의 관계 (p.17)

"C#은 닷넷 프레임워크를 기반으로 IL 코드를 생성하는 컴파일러에 불과하므로"
에서 C#이 아니라 혹시 CLR 이 아닌가요?

[2] 10.2.5 비동기 호출의 병렬 처리 (p.698)

Thread t5 = new Thread((result) => // result!!!
{
    Thread.Sleep(5000);
    dict.Add("t5Result", 5);
});

t3.Start(dict); // dict!!!

에서 dict와 result가 필요없는 듯 합니다.
그런데 dict.Add는 t3와 t5가 공유하기 때문에
lock으로 묶어야 하는 것이 아닌가요?


[연관 글]






[최초 등록일: ]
[최종 수정일: 5/19/2023]


비밀번호

댓글 작성자
 



2023-05-19 10시37분
1. "CLR은 닷넷 프레임워크를 기반으로 IL 코드를 생성하는 컴파일러에 불과"하다는 건가요? 왜 그렇게 생각하시나요? CLR은 Common Language Runtime으로 JIT, GC와 같은 구성요소를 포함하고 닷넷 응용 프로그램을 실행시키는 근간입니다. CLR을 컴파일러라고 알고 계시는 이유가 있을까요?

2. 말씀해 주신 부분이 맞습니다. dict를 전달하고 있지만 Thread 메서드 내에서 사용하지 않고 있으며, dict.Add는 thread-safe하지 않으므로 동기화가 필요합니다. 단지, 그 예제에서는 Thread.Sleep의 시간차로 문제가 될 여지는 없고 그 예제가 포함된 절의 주제가 동기화가 아니긴 합니다.

그래도 혹시 그런 부분이 혼동을 일으킬 수 있으므로 다음 개정판부터는 예제를 수정하겠습니다. 의견 주셔서 정말 감사드립니다. ^^
정성태
2023-05-19 10시41분
[영귤] 책을 여러번 읽어본 것 같은데 아직도 1장이 제일 어렵네요^^ 다시 정독하겠습니다.
[guest]

[1] 
NoWriterDateCnt.TitleFile(s)
12이종효12/21/2023743String.Format은 정적 메서드 아닌가요? [1]
10다크파이썬8/24/20231956C# 11 개정판 계획이 있으신가요? [1]
9유동한8/7/20231481.NET Framework의 BCL에 대하여 질문드립니다. [1]
5김태원5/28/20231881C# 이해안가는부분 [1]
4리세5/28/20231723안녕하세요. c#의 워커스레드에 대해 질문을 드립니다. [3]
3영귤5/19/20231473비동기 호출의 병렬 처리 질문입니다. [2]
2jw5/15/20231676Char 타입은 문자열 기본 타입이 맞나요? [2]
[1]