都是golang的小例子 因为不能高亮的原因就选择了code=c
package main
import(
"fmt"
"time"
"strconv"
)
var c chan int
func ready(w string, sec int) {
time.Sleep(int64(sec) * 1e9)
fmt.Println(w,"is ready!")
c <- 1
}
func main() {
c = make(chan int)
for k := 0; k < 10; k ++ {
go ready(strconv.Itoa(k) + " thread",k)
}
fmt.Println("I'm watiting, but not too long")
var i int
L: for {
select {
case <-c:
i ++
if i > 9 {
break L
}
}
}
}
package main
import (
"fmt"
)
func main() {
ch := make(chan int)
quit := make(chan bool)
go shower(ch, quit)
for i := 0; i < 10; i++ {
ch <- i
}
quit <- false
}
func shower(c chan int, quit chan bool) {
for {
select {
case j := <-c:
fmt.Printf("%d\n", j)
case <- quit:
break
}
}
}
func toString(any interface {} ) string {
switch any.(type) {
case string:
return any.(string)
case int:
return strconv.Itoa(any.(int))
case bool:
return strconv.Btoa(any.(bool))
default:
panic("the type "+reflect.TypeOf(any).String()+" is not support ")
}
return ""
}
func main() {
cmd := exec.Command("ps","-e","-opid,ppid,comm")
output ,_ := cmd.Output()
child := make(map[int]*vector.IntVector)
for i, line := range strings.Split(string(output), "\n") {
if i == 0 || len(line) == 0 {
continue
}
field := strings.Fields(line)
p, _ := strconv.Atoi(field[0])
pp, _ := strconv.Atoi(field[1])
if child[pp] == nil {
child[pp] = new (vector.IntVector)
}
child[pp].Push(p)
}
sortpp := make([]int,len(child))
i := 0
for k, _ := range child {
sortpp[i] = k
i ++
}
sort.Ints(sortpp)
for _, pp := range sortpp {
length := child[pp].Len()
fmt.Printf("Pid %d has %d child", pp, length)
if length == 1 {
fmt.Printf(": %v\n", []int(*child[pp]))
} else {
fmt.Printf("ren: %v\n", []int(*child[pp]))
}
}
}
package main
import(
"time"
)
func main() {
var c1 = make(chan int)
var c2 = make(chan int)
go func() {
time.Sleep(3e9)
c1 <- 1
// c2 <- 2
}()
select {
case <-c1:
println("read from chan c1")
case <-c2:
println("read from chan c2")
// default:
// println("defalut")
}
println("select over")
}
output:
read from chan c1
select over
分享到:
相关推荐
Go轻松学,可以让你随时随地浏览Go提供的独特功能,本应用提供了翔实的测试例程序,100%测试通过。并且可以根据反馈持续更新。在这里,变量,函数,结构体,指针,并行计算,包和测试都有详细的讲解,另外独特的关键...
碳元素主要以两种同素异形体形式存在,即石墨和金刚石。除此之外,碳元素还能够形成多种化学性质非常稳定的化合物,这种特性使得碳元素成为了生命存在的基础。碳元素的一个重要特性是其能够与自身或者其他元素形成...
标题中提到的关键知识点是“golang 40行代码实现通用协程池”,这说明文章介绍的内容是如何利用Go语言(golang)在非常少的代码行数(40行)内创建一个通用的协程池来管理并发任务。在理解了这一概念之后,我们可以...
在本例中,一个以Python和Go语言为基础的异步生态被用于构建一个个人博客系统,这一过程涉及到从后端服务的设计到前端用户界面的实现的每一个步骤。 Python作为一种广泛使用的高级编程语言,拥有强大的库支持和简洁...
在这个场景中,我们有一个名为“小锁匠”的小程序,它专门用于批量处理文件夹下的多个文件进行加密和解密操作。该程序的特性使得用户可以快速、方便地对不同类型的文件进行安全保护,无需逐个处理。 首先,我们要...
Channel 分为无缓冲和有缓冲两种类型,无缓冲 Channel 在发送或接收值时会阻塞,直到有另一个 Goroutine 准备好接收或发送值;而有缓冲 Channel 可以预先存放一定数量的元素而不阻塞。 #### 2. Golang 的并发安全性...
1. 安装MSYS2:首先,下载并安装适合你系统的MSYS2版本(本例中是64位)。 2. 更新MSYS2:打开MSYS2终端,执行`pacman -Syu`更新包管理系统和安装必要的依赖。 3. 安装MinGW-w64 GCC编译器:输入`pacman -S mingw-w...
《Go语言深度解析——以"cursoAlura"项目为例》 在编程领域,Go语言,又称Golang,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它旨在提高开发者的生产力,同时保持系统的高效运行...