func main1(){
//runtime.GOMAXPROCS(1)
for i :=0 ; i<10 ;i++{
go fmt.Println(i) //启动10个goroutine 来计算
}
time.Sleep(1*time.Second)
}
func main(){
/// wg sync.WaitGroup执行顺序是最后一个先执行,以下结果为e,a,b,c,d
//不使用wg时结果为a,b,c,d,e
var wg sync.WaitGroup
wg.Add(5)
go func() {
fmt.Println("a")
wg.Done()
}()
go func() {
defer wg.Done()
fmt.Println("b")
}()
go func() {
defer wg.Done()
fmt.Println("c")
}()
go func() {
defer wg.Done()
fmt.Println("d")
}()
go func() {
defer wg.Done()
fmt.Println("e")
}()
//wg.Wait()
//time.Sleep(1*time.Second)
wg.Wait()
}
// 例子3
func cal(pre string, wg *sync.WaitGroup){
defer wg.Done()
for i:=0;i<10 ;i++ {
fmt.Printf("prefix:%s,%d
", pre, i)
time.Sleep(1*time.Second)
}
}
func main(){
runtime.GOMAXPROCS(1)
var wg sync.WaitGroup
wg.Add(2)
go cal("a", &wg)
go cal("b", &wg)
wg.Wait()
fmt.Println("end...")
}
////
prefix:b,0
prefix:a,0
prefix:a,1
prefix:b,1
prefix:b,2
prefix:a,2
prefix:a,3
prefix:b,3
...
`////////////////`
func st(){
ch := make(chan int, 10)
ch <- 3
close(ch)
//data := <- ch
//fmt.Println(data)
fmt.Println("ssssssss")
//for d := range ch{
// fmt.Println(d)
//}
//return
for {
data := <- ch
fmt.Println(data)
time.Sleep(1*time.Second)
}
//limiter := time.Tick(time.Second*1)
return
//var sx rune
//sx = 'd'
fmt.Println("start..")
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
for count :=0; count <3;count++ {
for a :='a'; a< 'a' + 26;a++{
fmt.Printf("%c", a)
}
fmt.Println()
}
}()
fmt.Println("middle..")
go func() {
defer wg.Done()
for count:=0;count<3;count++{
for a:='A';a<'A'+26;a++{
fmt.Printf("%c", a)
}
fmt.Println()
time.Sleep(1*time.Second)
}
}()
wg.Wait()
fmt.Println("END..")
}