컴퓨터 지식 네트워크 - 컴퓨터 백과사전 - 멀티스레드 프로그래밍에서는 무슨 일이 일어나고 있나요?

멀티스레드 프로그래밍에서는 무슨 일이 일어나고 있나요?

시스템에서 실행되는 모든 프로그램은 프로세스입니다. 각 프로세스에는 하나 이상의 스레드가 포함됩니다. 프로세스는 전체 프로그램 또는 프로그램의 일부를 동적으로 실행하는 것일 수도 있습니다. 스레드는 프로그램 내에서 독립적으로 실행될 수 있는 명령 모음 또는 프로그램의 특수 세그먼트입니다. 이는 코드가 실행되는 컨텍스트로도 이해될 수 있습니다. 따라서 스레드는 기본적으로 단일 프로그램 내에서 여러 작업을 수행하는 경량 프로세스입니다. 운영 체제는 일반적으로 여러 스레드의 예약 및 실행을 담당합니다.

멀티스레딩이란 무엇인가요?

멀티스레딩은 여러 스레드가 병렬로 작동하여 여러 작업을 완료하여 시스템 효율성을 향상시키는 것입니다. 스레드는 여러 작업을 동시에 완료해야 할 때 구현됩니다.

스레드 사용의 이점은 다음과 같습니다:

·스레드를 사용하면 처리를 위해 장기적인 프로그램 작업을 백그라운드로 넣을 수 있습니다.

·사용자 인터페이스는 다음을 수행할 수 있습니다. 사용자가 특정 이벤트의 처리를 트리거하기 위해 버튼을 클릭하면 진행률 표시줄이 팝업되어 처리 진행 상황을 표시할 수 있으므로 더욱 매력적입니다.

·프로그램 실행 속도가 빨라질 수 있습니다.

·스레드는 사용자 입력, 파일 읽기 및 쓰기, 네트워크 데이터 전송 및 수신과 같은 일부 대기 작업을 구현하는 데 더 유용합니다. 이 경우 메모리 사용량 등과 같은 일부 귀중한 리소스를 해제할 수 있습니다.

멀티스레딩을 사용하면 여기에 설명되지 않은 다른 많은 이점이 있습니다.

스레딩 모델에 대한 일부 배경

Win32 환경에서 일반적으로 사용되는 일부 모델에 중점을 둘 수 있습니다.

·단일 스레드 모델

이 스레딩 모델에서는 프로세스에 스레드가 하나만 있을 수 있으며 나머지 프로세스는 현재 스레드의 실행이 완료될 때까지 기다려야 합니다. 이 모델의 단점은 시스템이 작은 작업을 완료하는 데 오랜 시간이 걸린다는 것입니다.

·블록 스레드 모델(단일 스레드 다중 블록 모델 STA)

이 모델에서는 프로그램에 여러 실행 스레드가 포함될 수 있습니다. 여기서 각 스레드는 프로세스 내에서 별도의 블록으로 나뉩니다. 각 프로세스는 여러 블록을 포함할 수 있으며 여러 블록의 데이터를 공유할 수 있습니다. 프로그램은 각 블록의 스레드 실행 시간을 지정합니다. 모든 요청은 Windows 메시지 큐를 통해 직렬화됩니다. 이를 통해 한 번에 하나의 블록만 액세스할 수 있으므로 한 번에 하나의 프로세스만 실행할 수 있습니다. 단일 스레드 모델에 비해 이 모델의 장점은 단일 사용자 요청이 아닌 여러 사용자가 요청한 작업에 동시에 응답할 수 있다는 것입니다. 하지만 직렬화된 스레드 모델을 사용하고 작업이 차례로 실행되기 때문에 성능이 그다지 좋지 않습니다.

·멀티 스레드 블록 모델(프리 스레드 블록 모델)

멀티 스레드 블록 모델(MTA)은 여러 블록이 아닌 각 프로세스에 하나의 블록만 갖습니다. 이 단일 블록은 단일 스레드가 아닌 여러 스레드를 제어합니다. 모든 스레드가 동일한 블록의 일부이고 공유될 수 있으므로 여기에는 메시지 대기열이 필요하지 않습니다. 이러한 프로그램은 단일 스레드 모델 및 STA보다 빠르게 실행되므로 시스템 부하를 줄이므로 시스템 유휴 시간을 줄이기 위해 최적화할 수 있습니다. 이러한 응용 프로그램은 일반적으로 스레드가 동일한 리소스를 동시에 요청하지 않도록 프로그래머가 스레드 동기화를 제공해야 하므로 경쟁 조건이 발생하기 때문에 복잡합니다. 여기에는 잠금 메커니즘을 제공해야 합니다. 그러나 이로 인해 시스템 교착 상태가 발생할 수 있습니다.

上篇: 대서양과 태평양을 나누는 경계선 下篇: 어떻게 제 1 창업증권거래소프트웨어를 이용하여 판 상승폭 순위를 볼 수 있을까?
관련 내용