質問編集履歴

8

aaaaaaaa

2023/01/27 12:11

投稿

akiyama_pga
akiyama_pga

スコア186

test CHANGED
File without changes
test CHANGED
@@ -58,3 +58,12 @@
58
58
  https://osmh.dev/posts/goroutines-under-the-hood
59
59
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-27/0554cc12-391a-4aa1-8205-1a0b4bb6c678.png)
60
60
 
61
+ --追記5
62
+ goroutine 現在の理解
63
+
64
+ goroutineをM:Nとして使う(NPTLと対比)⇓
65
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-27/165cb5f6-da33-4c78-a680-ec8697521e55.png)
66
+
67
+ goroutineを1:Nとして使う⇓
68
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-27/8b6a41a3-89f0-4dcb-ba6a-6742bd8191d8.png)
69
+

7

gogogogog

2023/01/27 01:44

投稿

akiyama_pga
akiyama_pga

スコア186

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
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-27/0554cc12-391a-4aa1-8205-1a0b4bb6c678.png)
60
+

6

jhhjghj

2023/01/24 06:30

投稿

akiyama_pga
akiyama_pga

スコア186

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  --追記2
33
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-24/e4fc1786-9b52-4e93-8b13-73997273e8d8.png)
33
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-24/4aa390a6-81b5-4552-a0a5-45f777b0ae53.png)
34
34
 
35
35
  --追記3
36
36
  pthreadライブラリには大きく3種類ほどあり、

5

aaaafds

2023/01/24 05:54

投稿

akiyama_pga
akiyama_pga

スコア186

test CHANGED
File without changes
test CHANGED
@@ -32,3 +32,23 @@
32
32
  --追記2
33
33
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-24/e4fc1786-9b52-4e93-8b13-73997273e8d8.png)
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

2023/01/24 04:00

投稿

akiyama_pga
akiyama_pga

スコア186

test CHANGED
File without changes
test CHANGED
@@ -29,3 +29,6 @@
29
29
  機能的にはpthreadと同等という感じでしょうか。
30
30
 
31
31
 
32
+ --追記2
33
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-24/e4fc1786-9b52-4e93-8b13-73997273e8d8.png)
34
+

3

gazo

2023/01/23 04:05

投稿

akiyama_pga
akiyama_pga

スコア186

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-23/4f80a828-57dc-42f2-8fc9-8643afd9feec.png)
1
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-23/12570091-3685-49c1-bcb6-9f34bda03d85.png)
2
2
 
3
3
  疑問1.
4
4
  python や go のスレッドはユーザレベルの、完全にユーザ空間で完了するものだと思います。(プロセスコンティションスコープであり、内部でcloneは使用しない。)

2

fdasfdsfsdf

2023/01/23 02:56

投稿

akiyama_pga
akiyama_pga

スコア186

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

2023/01/23 02:00

投稿

akiyama_pga
akiyama_pga

スコア186

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-23/b2f22cac-3d8c-47a0-b275-28bf0fc986c4.png)
1
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-23/4f80a828-57dc-42f2-8fc9-8643afd9feec.png)
2
2
 
3
3
  疑問1.
4
4
  python や go のスレッドはユーザレベルの、完全にユーザ空間で完了するものだと思います。(プロセスコンティションスコープであり、内部でcloneは使用しない。)