質問編集履歴
8
aaaaaaaa
test
CHANGED
File without changes
|
test
CHANGED
@@ -58,3 +58,12 @@
|
|
58
58
|
https://osmh.dev/posts/goroutines-under-the-hood
|
59
59
|

|
60
60
|
|
61
|
+
--追記5
|
62
|
+
goroutine 現在の理解
|
63
|
+
|
64
|
+
goroutineをM:Nとして使う(NPTLと対比)⇓
|
65
|
+

|
66
|
+
|
67
|
+
goroutineを1:Nとして使う⇓
|
68
|
+

|
69
|
+
|
7
gogogogog
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,3 +52,9 @@
|
|
52
52
|
カーネルからはLWPをプロセスと見るし、
|
53
53
|
ユーザからはスレッドの集合をプロセスと見る場合が多い。
|
54
54
|
|
55
|
+
--追記4
|
56
|
+
goroutine thread model
|
57
|
+
引用元
|
58
|
+
https://osmh.dev/posts/goroutines-under-the-hood
|
59
|
+

|
60
|
+
|
6
jhhjghj
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
--追記2
|
33
|
-

|
34
34
|
|
35
35
|
--追記3
|
36
36
|
pthreadライブラリには大きく3種類ほどあり、
|
5
aaaafds
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,3 +32,23 @@
|
|
32
32
|
--追記2
|
33
33
|

|
34
34
|
|
35
|
+
--追記3
|
36
|
+
pthreadライブラリには大きく3種類ほどあり、
|
37
|
+
1:1モデルを採用するLinux threads, NPTL(native posix thread library),
|
38
|
+
M:Nモデルを採用するNGPT(next generation posix thread)
|
39
|
+
という具合に分かれているようです。
|
40
|
+
つまり、本記事で自分が考えているpthreadは、NPTLのことです。
|
41
|
+
|
42
|
+
M:Nモデルは、複数のユーザスレッドを複数のLWP上で実行する、goroutineとNPTLを足したようなもののようですが、
|
43
|
+
これは理解が難しそうなので、とりあえずおいておきます...
|
44
|
+
|
45
|
+
PPIDが2のカーネルスレッドを、"カーネルデーモン"という呼び方ができるようなので、
|
46
|
+
LWPのことをカーネルスレッドとも呼べるので、その使い分けとして使うのもありだと思った。
|
47
|
+
|
48
|
+
あるスレッドについて、ユーザモードで実行中の場合、それをユーザスレッドと呼び、
|
49
|
+
カーネルモードで実行中の場合、それをLWP(またはカーネルスレッド)と呼ぶよう。
|
50
|
+
とにかくそのスレッドの実体は1つのtask_structであり、また、当然カーネルデーモンとは違い、個別のアドレス空間を持つ。
|
51
|
+
|
52
|
+
カーネルからはLWPをプロセスと見るし、
|
53
|
+
ユーザからはスレッドの集合をプロセスと見る場合が多い。
|
54
|
+
|
4
gazoooo
test
CHANGED
File without changes
|
test
CHANGED
@@ -29,3 +29,6 @@
|
|
29
29
|
機能的にはpthreadと同等という感じでしょうか。
|
30
30
|
|
31
31
|
|
32
|
+
--追記2
|
33
|
+

|
34
|
+
|
3
gazo
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-

|
2
2
|
|
3
3
|
疑問1.
|
4
4
|
python や go のスレッドはユーザレベルの、完全にユーザ空間で完了するものだと思います。(プロセスコンティションスコープであり、内部でcloneは使用しない。)
|
2
fdasfdsfsdf
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,3 +17,15 @@
|
|
17
17
|
今後スレッドをメインにプログラミングしていく際に、このあたりの理解から使用言語を絞りたいと考えております。
|
18
18
|
|
19
19
|
|
20
|
+
--追記
|
21
|
+
python threading は、試してみたところ、
|
22
|
+
```
|
23
|
+
aa 9992 9962 9992 0 3 11:48 pts/0 00:00:00 python3 thre.py
|
24
|
+
aa 9992 9962 9993 0 3 11:48 pts/0 00:00:00 python3 thre.py
|
25
|
+
aa 9992 9962 9994 0 3 11:48 pts/0 00:00:00 python3 thre.py
|
26
|
+
|
27
|
+
```
|
28
|
+
のように各スレッド(mainとmianから派生したスレッド*2)にLWP番号が振られていましたので、カーネルレベルのスレッディングだということがわかりました。
|
29
|
+
機能的にはpthreadと同等という感じでしょうか。
|
30
|
+
|
31
|
+
|
1
gazou
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-

|
2
2
|
|
3
3
|
疑問1.
|
4
4
|
python や go のスレッドはユーザレベルの、完全にユーザ空間で完了するものだと思います。(プロセスコンティションスコープであり、内部でcloneは使用しない。)
|