thread 함수 예제

이러한 함수는 시간이 많이 소요되는 함수입니다. 단일 스레드 런타임 환경에서 이러한 작업은 차례로 실행됩니다. 다음 작업은 이전 작업이 완료된 경우에만 발생할 수 있습니다. 위의 간단한 예는 스레드의 작동 방식을 보여 주는 간단한 예제입니다. 스레드에서 전역 변수에 액세스하는 것은 일반적으로 좋지 않습니다. 스레드 2가 스레드 1보다 우선 순위가 있고 스레드 1이 변수를 변경해야 하는 경우 는 무엇입니까? 실제로 여러 스레드에서 전역 변수에 액세스해야 하는 경우 뮤텍스를 사용하여 액세스해야 합니다. 스레드란 무엇입니까? 스레드는 프로세스 내의 단일 시퀀스 스트림입니다. 스레드는 프로세스의 속성 중 일부를 가지므로 경량 프로세스라고도 합니다. Thread 클래스는 스레드 를 관리하는 데 도움이 되는 몇 가지 메서드를 정의합니다: Runnable 인터페이스를 구현하는 클래스 만들기를 제외한 모든 것이 함수 포인터와 매우 유사합니다. run() 메서드에서 실행하려는 코드를 넣는것은 Runnable 인터페이스를 준수하기 위해 작성해야 하는 메서드입니다. “main” 스레드에서 새 Thread 클래스를 만들고 생성자가 Runnable의 인스턴스를 전달한 다음 start()를 호출합니다. start는 JVM에게 새 스레드를 만드는 마법을 수행한 다음 해당 새 스레드에서 실행 메서드를 호출하도록 지시합니다. 스레드에 의해 run() 메서드를 실행하려면 MyClass 인스턴스를 생성자의 스레드에 전달합니다(Java의 생성자는 개체 인스턴스가 생성될 때 호출되는 메서드와 유사한 코드 블록입니다).

다음은 그 방법 : pthread 기본 함수의 사용을 설명하는 간단한 C 프로그램은 아래 프로그램은 pthread 라이브러리가있는 C 컴파일러로만 컴파일 할 수 있습니다. 스레드를 만드는 두 번째 방법은 Thread를 확장하는 새 클래스를 만든 다음 run() 메서드를 재정의한 다음 해당 클래스의 인스턴스를 만드는 것입니다. run() 메서드는 start()를 호출한 후 스레드에서 실행되는 메서드입니다. 다음은 Java Thread 하위 클래스를 만드는 예제입니다: 이제 모든 Java 프로그램이 가지고 있는 기본 Java 스레드로 시작하는 스레드를 사용하는 방법을 살펴보겠습니다. 또는 std::async를 사용하여 작업을 만들고 std::future에서 반환 값을 얻을 수 있습니다. 태스크는 함수 포인터, 펑터 또는 람다 함수를 사용할 수도 있습니다. 프로세스와 스레드의 차이점은 무엇입니까? 스레드는 다른 스레드가 코드 섹션, 데이터 섹션 및 열린 파일 및 신호와 같은 OS 리소스와 공유하기 때문에 다른 프로세스와 독립적이지 않습니다. 그러나 프로세스와 마찬가지로 스레드에는 자체 프로그램 카운터(PC), 레지스터 집합 및 스택 공간이 있습니다. 위에서 언급했듯이 전역 및 정적 변수가 있는 여러 스레드를 표시하는 C 프로그램은 모든 스레드가 데이터 세그먼트를 공유합니다. 전역 및 정적 변수는 데이터 세그먼트에 저장됩니다. 따라서 모든 스레드에서 공유 됩니다. 다음 예제 프로그램은 동일한 것을 보여 줍니다.

main() 시스템에서 스레드를 식별하는 데 사용되는 정수인 pthread_t 형식인 thread_id라는 변수를 선언합니다. thread_id를 선언한 후 pthread_create() 함수를 호출하여 스레드를 만듭니다. pthread_create()는 4개의 인수를 사용합니다. 첫 번째 인수는 이 함수에 의해 설정된 thread_id에 대한 포인터입니다. 두 번째 인수는 특성을 지정합니다. 값이 NULL이면 기본 특성이 사용됩니다. 세 번째 인수는 스레드를 만들 수 있도록 실행할 함수의 이름입니다.