質問編集履歴

4

追加説明

2018/01/23 00:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -54,13 +54,21 @@
54
54
 
55
55
  switch {
56
56
 
57
- case <-sig:
57
+ case result <-sig:
58
+
58
-
59
+ if result == true{
60
+
59
- pp.Print("True")
61
+ pp.Print("True")
62
+
63
+ } else {
64
+
65
+ pp.Print("False")
66
+
67
+ }
60
68
 
61
69
  default:
62
70
 
63
- pp.Print("False")
71
+
64
72
 
65
73
  }
66
74
 

3

追加説明

2018/01/23 00:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -38,9 +38,11 @@
38
38
 
39
39
  sig <- true
40
40
 
41
+ } else {
42
+
43
+ sig <- false
44
+
41
- }
45
+ }
42
-
43
- sig <- false
44
46
 
45
47
  wg.Done()
46
48
 
@@ -173,3 +175,91 @@
173
175
  をご指導していただきたいです。
174
176
 
175
177
  よろしくお願いたします
178
+
179
+
180
+
181
+ ## 追加
182
+
183
+
184
+
185
+ 以下のコードではすべてが出力されたあとに`deadlock`のエラーが出ます。
186
+
187
+
188
+
189
+ ```
190
+
191
+ package main
192
+
193
+
194
+
195
+ import (
196
+
197
+ "sync"
198
+
199
+
200
+
201
+ "github.com/k0kubun/pp"
202
+
203
+ )
204
+
205
+
206
+
207
+ func main() {
208
+
209
+ wg := sync.WaitGroup{}
210
+
211
+ sig := make(chan bool)
212
+
213
+ for i := 0; i < 10; i++ {
214
+
215
+ wg.Add(1)
216
+
217
+ go func(i int) {
218
+
219
+ pp.Println(i)
220
+
221
+ if i == 3 {
222
+
223
+ sig <- true
224
+
225
+ } else {
226
+
227
+ sig <- false
228
+
229
+ }
230
+
231
+ wg.Done()
232
+
233
+ }(i)
234
+
235
+ }
236
+
237
+
238
+
239
+      for {
240
+
241
+ switch {
242
+
243
+ case <-sig:
244
+
245
+ pp.Print("True")
246
+
247
+ default:
248
+
249
+ pp.Print("False")
250
+
251
+ }
252
+
253
+ }
254
+
255
+
256
+
257
+ wg.Wait()
258
+
259
+ close(sig)
260
+
261
+ pp.Print("All Done")
262
+
263
+ }
264
+
265
+ ```

2

追加説明

2018/01/23 00:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -102,6 +102,8 @@
102
102
 
103
103
  7
104
104
 
105
+ fatal error: all goroutines are asleep - deadlock!
106
+
105
107
  ```
106
108
 
107
109
 

1

追加説明

2018/01/22 14:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -76,6 +76,36 @@
76
76
 
77
77
 
78
78
 
79
+ 出力は以下の通りです。
80
+
81
+
82
+
83
+ ```
84
+
85
+ 9
86
+
87
+ 1
88
+
89
+ 5
90
+
91
+ 0
92
+
93
+ 2
94
+
95
+ 3
96
+
97
+ "False"8
98
+
99
+ 6
100
+
101
+ 4
102
+
103
+ 7
104
+
105
+ ```
106
+
107
+
108
+
79
109
  しかし、以下のケースではうまくいきます。
80
110
 
81
111