VB.NET 스레딩을 이해하려면 몇 가지 기본 개념을 이해하는 데 도움이 됩니다. 첫 번째는 운영 체제가 이를 지원하기 때문에 스레딩이 발생하는 것입니다. 마이크로 소프트 윈도우는 선제 멀티 태스킹 운영 체제입니다. 작업 스케줄러라는 Windows의 일부가 실행 중인 모든 프로그램에 프로세서 시간을 제공합니다. 프로세서 시간의 이러한 작은 덩어리를 시간 조각이라고 합니다. 프로그램은 그들이 얻을 얼마나 많은 프로세서 시간을 담당하지 않습니다, 작업 스케줄러는. 이러한 시간 조각은 너무 작기 때문에 컴퓨터가 한 번에 여러 작업을 수행하고 있다는 착각을 얻을 수 있습니다. 멀티스레딩은 멀티코어 병렬 처리와 는 않지만 멀티스레딩및 멀티프로세싱이 함께 작동합니다. 오늘날 대부분의 PC에는 적어도 두 개의 코어가 있는 프로세서가 있으며, 일반 가정용 컴퓨터에는 최대 8개의 코어가 있는 경우가 있습니다. 각 코어는 자체적으로 프로그램을 실행할 수 있는 별도의 프로세서입니다. OS가 다른 코어에 다른 프로세스를 할당하면 성능이 향상됩니다. 더 큰 성능을 위해 여러 스레드와 여러 프로세서를 사용하는 것을 스레드 수준 병렬처리라고 합니다.

이것은 어셈블리 수준 이지만 스레드에 대 한 생각을 시작할 때 에 도착 하는 것입니다. 이렇게 하면 전체 응용 프로그램이 직렬 방식으로 실행되었을 것입니다. 그러나 위의 첫 번째 코드 예제는 TestMultiThreading 서브루틴을 시작하고 계속됩니다. 마침내 비주얼 베이직은 무료 스레딩의 맛을 통합합니다. 스레딩의 개념은 항상 나를 매료시켰습니다. 그리고 지금, 모든 좋은 스레드는 매우 간단한 방식으로 VB.NET 액세스 할 수 있습니다. 이 예제에서는 스레드를 사용하고 실행을 위해 각 스레드에 우선 순위를 할당하는 방법을 소개합니다. 모든 코드가 여기에 표시되는 것은 아닙니다. 변조되는 문자의 배열은 단순히 «1», «2», «3», «4»및 «5»입니다. 다음은 코드의 관련 부분입니다.

이것은 VB.NET 멀티 스레딩이라는 주제에 대한 코드 프로젝트에 대한 첫 번째 기사입니다. Thread.Sleep 메서드를 사용하여 지정된 시간 동안 현재 스레드를 일시 중지합니다. Thread.Interrupt 메서드를 호출하여 차단된 스레드를 중단할 수 있습니다. 자세한 내용은 스레드 일시 중지 및 중단을 참조하십시오. Thread.Join 메서드를 사용하여 호출 스레드가 메서드가 호출되는 스레드의 종료를 기다리게 합니다. 이 기사의 첫 번째 부분에서는 경주 조건을 언급했습니다. 다음은 직접 보여 주는 예제입니다: 다중 스레딩에서 사용되는 기본 네임스페이스는 System.Threading 네임스페이스이며 Thread 클래스는 새 스레드를 만들고 시작및 중지합니다. 아래 예제에서는 TestMultiThreading이 대리자임을 알 수 있습니다. 즉, Thread 메서드가 호출할 수 있는 메서드의 이름을 사용해야 합니다.

여기서는 VB.NET 단일 스레드를 만드는 방법을 이해하기 위해 세 개의 간단한 스레드를 만듭니다. 그러나 스레드를 시작하고 Permute 하위를 대신 시작하면 이 예방 적 대화를 배경으로 밀어 내고 일부 멀티 스레딩 코드를 작성할 차례입니다. 이 문서에서는 현재 단순하게 콘솔 응용 프로그램을 사용합니다. 따라하려면 새 콘솔 응용 프로그램 프로젝트로 Visual Studio를 시작합니다. System.Threading.Thread 클래스의 새 인스턴스를 만들고 생성자에 새 스레드에서 실행하려는 메서드의 이름을 제공하여 새 스레드를 만듭니다. 생성된 스레드를 시작하려면 Thread.Start 메서드를 호출합니다. 자세한 정보 및 예제는 시작 시간 문서 및 Thread API 참조에서 스레드 만들기 및 데이터 전달을 참조하십시오. .NET 프레임워크 4부터 는 System.Threading.CancelToken을 사용하여 스레드를 협조적으로 취소할 수 있습니다. 자세한 내용은 관리되는 스레드의 취소를 참조하십시오. 응용 프로그램 스레드의 동작을 보다 세한 제어가 필요한 경우 스레드를 직접 관리할 수 있습니다.

그러나 .NET Framework 4부터 시작하여 System.Threading.Task.Task.Task 클래스, 병렬 LINQ(PLINQ), 새로운 동시 컬렉션 클래스로 다중 스레드 프로그래밍이 크게 간소화됩니다. System.Collections.Concurrent 네임스페이스 및 스레드가 아닌 작업 개념을 기반으로 하는 새 프로그래밍 모델입니다.