Golang にはプロセスがあります。プロセスは、オペレーティング システムにおけるプログラムの実行プロセスであり、システムによるリソースの割り当てとスケジューリングの基本単位です。プロセスは動的概念であり、システムの実行中にリソースを割り当てて管理するための基本単位です。各プロセスには独自のアドレス空間があります。 Go 言語は複数のプロセスをサポートしており、そのスレッド モデルは MPG モデルであり、一般に Go プロセスとカーネル スレッドの間には多対多の対応関係があります。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
プロセスとは、オペレーティング システム内のプログラムです。プロセスは、システムによるリソース割り当てとスケジューリングの基本単位です。プロセスは動的概念であり、プログラム実行中にリソースを割り当て、管理するための基本単位です。各プロセスは独自のアドレス空間を持ちます。プロセスには、初期状態、実行状態、待機状態、準備完了状態、終了状態の少なくとも 5 つの基本状態があります。
平たく言えば: プロセスとは実行中のプログラムです。
スレッドはプロセスの実行インスタンスであり、プログラム実行の最小単位であり、プロセスよりも小さく、独立して実行できる基本単位です。 。
平たく言えば: プロセスは複数のスレッドを作成でき、同じプロセス内の複数のスレッドを同時に実行できます。プログラムを実行したい場合は、少なくとも一つのプロセス。
シングルコア CPU 上で実行されるマルチスレッド プログラムは同時実行性であり、マルチコア CPU では並列実行されます。スレッドの数が CPU コアの数より大きい場合、マルチスレッド プログラムは複数の CPU 上で同時実行および並列実行されます。
package main import "fmt" func test() { for i := 0; i <h3 id="2.%20%E5%8A%A0%E5%85%A5go"><strong>2. go に参加</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>3. 参加時間</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>4. メインスレッドが迅速に実行されるとき</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>5. 同期.WaitGroup は待機しない問題を解決します</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>6. 複数のコルーチンの同時実行</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>5. 占有される CPU コアの数を設定します実行時 by golang (あまり重要ではありません) </strong></h2><pre class="brush:php;toolbar:false">package main import ( "fmt" "runtime" ) func main() { // 设置程序占用几个cpu进行执行,默认是全部 // 获取计算机cpu个数 cpuNum := runtime.NumCPU() fmt.Println(cpuNum) // 6 我本机电脑是6核cpu // 设置占用cpu个数 runtime.GOMAXPROCS(2) fmt.Println("ok") }
プログラミング関連の知識の詳細については、プログラミング ビデオをご覧ください。 !
以上がgolangにはプロセスがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。