2012-07-17 3 views
9

그래서 "C#을 통해 CLR을 읽고"이 줄은 "스레드는 CPU을 가상화하는 Windows 개념입니다."라는 오류가 발견되었습니다. 정말? 원래 Windows에서 single \ multi 스레드였습니까?

칭호에 대한 인터넷 검색이 도움이되지 않아 커뮤니티에서 도움을 얻지 못했습니다.스레드는 Windows 개념입니까?

+1

나는 책이 의미하는 바는 쓰레드가 .NET 커널이 아닌 .NET 커널에 의해 관리된다는 것이다. – MattDavey

+2

나는이 질문이 프로그래머에 속한다고 생각하지만, 그렇다면 나는 누구인가? 프로그래머로 더 이상 이사 할 수 없다. –

+1

이해하기 쉬운 실수입니다. 기술적으로 스레드는 운영 체제 수준의 개념입니다. O/S는 스레드를 관리합니다. C#의 맥락에서, 대다수의 경우 (Mono는 견디지 못함), O/S는 Windows가 될 것이므로,이 컨텍스트에서는 일반적으로 Windows 레벨 컨셉을 사용합니다. 쓰레기가 무엇인지에 대한 기술적이지 않은 일반적인 설명으로 받아 들여지는 것이 합리적입니다. 기술적으로 정확하지는 않지만 평균적으로 초보자는이 구별에 대해 알거나 신경 쓰지 않습니다. – David

답변

6

짧은 대답 : 아닙니다. 전적으로 Windows 개념이 아니며 개념은 꽤 오랫동안있었습니다.

10

저자가 실제로 의미하는 바는 메커니즘으로 스레딩이 .NET 프레임 워크가 아니라 Windows에서 관리되는 것입니다.

+0

.NET 스레드는 OS 스레드에 매핑되지 않으며, 단일 스레드를 공유 할 수 있으며 심지어 장면 뒤에서 더 가벼운 무게의 파이버로 전환 할 수도 있습니다. 그것들은 실제로 .NET의 것입니다. – Blindy

+2

C# 문서에는 아무 때나 전화를 걸 수 없다는 내용이 있습니다. 그들은 내게 OS 쓰레드처럼 보이고 행동한다. 작업 관리자도 그렇게 생각하는 것 같습니다. C#으로 2000 개의 스레드를 만들면 TM에 2001 스레드가있는 프로세스가 표시됩니다. .NET, (또는 다른 프레임 워크 또는 환경)에서 내 코드를 광섬유/녹색으로 만들려고 시도하는 것은 대단히 비우호적입니다. 나는 그것이 그것을 할 수있는 방법을 볼 수 없다. TBH. –

+0

지금은 CLR 스레드가 OS 스레드에 매핑되지만, grapevine은 이것이 나중에 변경 될 수 있다고 알려줍니다 (또는 4.5 또는 5.0에서 이미 변경되었을 수 있음). –

1

아미가 이미 멀티 스레딩을했다고 생각합니다. 텍스트가 멀티 스레딩을 Windows 개념이라고도 할 수 있지만 (원래는) Windows 발명이 아니라는 의미 일 수 있습니까?

2

Windows에서 "스레딩"에 관해 이야기 할 때 공유 메모리 및 구현에 대한 특정 가정이 있다고 말할 수 있습니다. 실제로 임베디드 프로그래밍과 달리 Windows 프로그래밍으로 옮겨 가기 전까지는 "스레드"라는 용어를 들어 보지 못했습니다. 나는 멀티 프로세싱과 멀티 태스킹에 더 익숙했다. 그래서 그 개념은 독특하지 않았지만 그 용어가 바뀌었을 수도 있습니다. Windows 이전의 제 경험을 보면, 글로벌이 아닌 한 여러 프로세스가 메모리를 공유하지 못했습니다.

관련 문제