>  기사  >  백엔드 개발  >  C#의 멀티스레딩 메커니즘에 대한 예비 연구(2)

C#의 멀티스레딩 메커니즘에 대한 예비 연구(2)

黄舟
黄舟원래의
2016-12-21 14:59:191251검색

이제 스레드를 생성해 보겠습니다. Thread 클래스를 사용하여 스레드를 생성할 때는 스레드 항목만 제공하면 됩니다. 스레드 항목을 통해 프로그램은 이 스레드가 수행할 작업을 알 수 있습니다. C#에서는 ThreadStart 대리자를 통해 스레드가 실행될 함수를 가리키는 함수 포인터로 이해할 수 있습니다. 스레드. Start() 메서드 이후 스레드는 ThreadStart가 나타내거나 가리키는 함수 실행을 시작합니다.

VS.net을 열고 새 콘솔 애플리케이션(콘솔 애플리케이션)을 생성하세요. 다음 코드를 사용하면 스레드를 완전히 제어하는 ​​무한한 즐거움을 경험할 수 있습니다!

//ThreadTest.cs

using System;
using System.Threading;

네임스페이스 ThreadTest

public class Alpha
  {
  public void Beta()
   { Line("Alpha.Beta는 자체 스레드에서 실행됩니다. ");
};

Public Class Simple
{
Public Static Int Main ()
{

Console.WriteLine("스레드 시작/중지/결합 샘플");


   Alpha oAlpha = new Alpha();
     //Alpha 클래스의 Beta() 메소드를 실행하기 위한 스레드를 생성합니다.
Thread oThread = new Thread(new ThreadStart(oAlpha.Beta)) ;
oThread.Start();

while (!oThread.IsAlive)


oThread.Abort()
oThread.Join(); ;
Console.WriteLine("Alpha.Beta가 완료되었습니다."); try

    Console.WriteLine("Alpha.Beta 스레드를 다시 시작해 보세요.")
  oThread.Start(); >Console.Write( "ThreadStateException이 Alpha.Beta를 다시 시작하는 중입니다.");
Console.WriteLine("중단된 스레드를 다시 시작할 수 없으므로 예상됩니다."); ;
   } 
   }
 }

이 프로그램에는 oThread 스레드를 생성할 때 Alpha.Beta( ) 메서드.(대리자) 개체, 우리가 만든 스레드 oThread가 oThread.Start() 메서드를 호출하여 시작하면 프로그램은 실제로 Alpha.Beta() 메서드를 실행합니다.

Alpha oAlpha = new Alpha ();
Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));
oThread.Start();

그런 다음 Main() 함수의 while 루프에서 정적 메서드 Thread.Sleep()을 사용하여 1ms 동안 메인 스레드를 중지합니다. 이 시간 동안 CPU는 실행 스레드 oThread로 전환됩니다. 그런 다음 Thread.Abort() 메서드를 사용하여 oThread 스레드를 종료하려고 합니다. 다음 oThread.Join()에 주의하세요. Thread.Join() 메서드는 oThread 스레드가 끝날 때까지 대기하게 만듭니다. Thread.Join() 메서드에 대한 최대 대기 시간으로 int 매개 변수를 지정할 수 있습니다. 그 후 Thread.Start() 메서드를 사용하여 oThread 스레드를 다시 시작하려고 시도했지만 분명히 Abort() 메서드의 결과는 스레드를 되돌릴 수 없게 종료하는 것이므로 결국 프로그램은 ThreadStateException을 발생시킵니다.

위는 C# 멀티스레딩 메커니즘에 대한 예비 탐구(2)입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.