golang에는 프로세스가 있습니다. 프로세스는 운영체제에서 프로그램을 실행하는 과정으로, 시스템이 자원을 할당하고 스케줄링하는 기본 단위이다. 프로세스는 동적 개념으로, 프로그램 실행 중에 자원을 할당하고 관리하는 기본 단위이다. 프로그램마다 고유한 주소 공간이 있습니다. Go 언어는 여러 프로세스를 지원하며 해당 스레드 모델은 일반적으로 Go 프로세스와 커널 스레드 간에 다대다 대응이 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
프로세스는 운영체제에서 프로그램의 실행 프로세스로, 시스템이 자원을 할당하고 스케줄링하는 기본 단위입니다. 동적 개념은 프로그램 실행 중 자원을 할당하고 관리하는 기본 단위입니다. 각 프로세스에는 고유한 주소 공간이 있습니다. 프로세스에는 초기 상태, 실행 상태, 대기 상태, 준비 상태, 종료 상태 등 최소한 5가지 기본 상태가 있습니다.
일반인의 용어로 말하면: 프로세스는 실행 프로그램입니다.
쓰레드는 프로세스의 실행 인스턴스이며, 프로그램 실행의 최소 단위이며, 독립적으로 실행될 수 있는 기본 단위입니다.
일반인의 관점에서 보면: 프로세스는 여러 스레드를 생성할 수 있으며 동일한 프로세스의 여러 스레드가 동시에 실행될 수 있습니다. 프로그램을 실행하려면 프로세스가 하나 이상 있어야 합니다.
여러 스레드가 동시에 위치를 놓고 경쟁하며, 경쟁하는 스레드만 실행될 수 있습니다. 각 기간마다 실행 중입니다.
여러 스레드를 동시에 실행할 수 있습니다. 각 기간마다 여러 스레드를 동시에 실행할 수 있습니다.
멀티 스레드 프로그램은 단일 코어 CPU에서 실행될 때 동시성이라고 하고, 멀티 코어 CPU에서 실행될 때 병렬이라고 합니다. 스레드 수가 CPU 코어 수보다 크면 다중 스레드 프로그램은 여러 CPU에서 동시 및 병렬이 됩니다.
는 Golang 프로그램의 메인 스레드에서 여러 코루틴을 활성화할 수 있습니다. golang의 여러 코루틴은 동시성 또는 병렬성을 달성할 수 있습니다.
은 커널에 투명한 사용자 수준 스레드로 이해될 수 있습니다. 즉, 시스템은 코루틴의 존재를 모르고 사용자 자체 프로그램에 의해 완전히 예약됩니다. golang의 주요 기능은 언어 관점에서 기본적으로 코루틴을 지원한다는 것입니다. 함수나 메서드 앞에 go 키워드를 추가하여 코루틴을 만들 수 있습니다. golang의 코루틴은 고루틴이라고 할 수 있습니다.
Golang의 멀티 코루틴은 다른 언어의 멀티 스레딩과 다소 유사합니다.
Golang의 각 고루틴(코루틴)은 기본적으로 Java 및 C 스레드보다 훨씬 적은 메모리를 차지합니다. OS 스레드(운영 체제 스레드)는 일반적으로 고정된 스택 메모리(보통 약 2MB)를 갖습니다. 고루틴(코루틴)은 매우 작은 메모리를 차지하며, 다중 고루틴 고루틴 전환의 스케줄링 오버헤드는 스레드보다 훨씬 적습니다. 이것이 점점 더 많은 대기업들이 Golang을 사용하는 이유 중 하나입니다.
package main import "fmt" func test() { for i := 0; i <h3 id="2.%20%E5%8A%A0%E5%85%A5go"><strong>2. 시간 추가</strong></h3><pre class="brush:php;toolbar:false">package main import "fmt" func test() { for i := 0; i <h3 id="3.%20%E5%8A%A0%E5%85%A5%E6%97%B6%E9%97%B4"><strong>4. </strong></h3> <pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) // 加入时间 func test1() { for i := 0; i <h3 id="4.%20%E4%B8%BB%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%E5%BF%AB%E7%9A%84%E6%83%85%E5%86%B5"><strong>5. sync.WaitGroup은 기다리지 않는 문제를 해결합니다</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) func test1() { for i := 0; i <h3 id="5.%20sync.WaitGroup%E8%A7%A3%E5%86%B3%E4%B8%8D%E7%AD%89%E5%BE%85"><strong>6. 여러 코루틴을 동시에 실행합니다.</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) var wg sync.WiatGroup func test2() { for i := 0; i <h3 id="6.%20%E5%A4%9A%E5%8D%8F%E7%A8%8B%E5%B9%B6%E5%8F%91%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C"><strong>5. 실행 시 golang이 차지하는 CPU 코어 수를 설정합니다. )</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) func hello(num int) { defer wg.Done() for i := 0; i <h2 id="%E4%BA%94%E3%80%81%E8%AE%BE%E7%BD%AEgolang%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8D%A0%E7%94%A8%E7%9A%84cpu%E6%A0%B8%E6%95%B0%E9%87%8F%EF%BC%88%E4%B8%8D%E6%98%AF%E5%BE%88%E9%87%8D%E8%A6%81%EF%BC%89">더 보기 프로그래밍 관련 지식을 더 보려면 <strong>프로그래밍 비디오</strong>를 방문하세요! ! </h2>
위 내용은 golang에는 프로세스가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!