golang|問題コードレポートgo同時デッドロック
6272 ワード
文書ディレクトリ
背景
老男の子の第5期のgoを学ぶことに従って、先生の設計は構造体を使うので、私はドラムを打って構造体を使わないことができますか.結果は多くの問題があった.記録をつける.実は主に分からないと思って、channelは引用タイプで、どうしてポインタのchannelタイプがありますか.
var a = make(chan *int)
var b = make(chan * bool)
コード#コード#
package main
import (
"fmt"
"math/rand"
"sync"
"time"
)
var wg sync.WaitGroup
var t1 = make(chan int, 200)
var t2 = make(chan int, 200)
func sc(a chan int) {
defer wg.Done()
for i := 0; i < 10; i++ {
a rand.Int()
// fmt.Println("js inside:", a)
time.Sleep(time.Millisecond * 1000)
}
}
func js(ch1 chan int, ch2 chan int) {
defer wg.Done()
n := ch1
sum := 0
for n > 0 {
sum += n % 10
n = n / 10
}
ch2 sum
}
func main() {
wg.Add(2)
go sc(t1)
// wg.Add(24)
// for i := 0; i < 24; i++ {
// go js(t1, t2)
// }
go js(t1, t2)
wg.Wait()
for a := range t2 {
fmt.Println("outside:", a)
// for b := range t1 {
// fmt.Println("outside:", b, a)
// }
}
}