本文目录一览:
1、golang 的Command启动的进程如何关闭
2、golang 怎么关闭conn
3、请教一个golang的并发下,chan通道关闭
golang 的Command启动的进程如何关闭
在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:
exec.CommandContext 方发实现了 context ,通过 context 可以对exec启动的进程结束。
隐藏程序自身黑窗口的方法: go build -ldflags="-H windows"
隐藏子进程黑窗口的方法:
cmd.SysProcAttr = syscall.SysProcAttr{HideWindow: true}
golang 怎么关闭conn
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
conn, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
panic(err)
}
defer conn.Close()
conn.Do("SET", "app1", "test1")
conn.Do("SET", "app2", "test2")
val, err := redis.Strings(conn.Do("KEYS", "app*"))
fmt.Println(val, err)
conn.Send("MULTI")
for i, _ := range val {
conn.Send("DEL", val[i])
}
fmt.Println(conn.Do("EXEC"))
}
Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。罗布·派克(RobPike),罗伯特·格瑞史莫(RobertGriesemer),及肯·汤普逊于2007年9月开始设计Go语言,稍后IanLanceTaylor,RussCox加入项目中。Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及MacOSX平台上进行了实现,后追加Windows系统下的实现。
请教一个golang的并发下,chan通道关闭
用select,实现代码如下:
先创建一个channel c
用于发送和接收整数
var c chan int
每一个文件处理完后,就发送整数1到c
func DoSomething(o interface{}) {
o.dosomething()
c <- 1
}
然后在主函数中加下面代码:
L:
for {
select {
case <-c:
i++ 17
if i 1 {
break L
}
}
}
现在将会一直等待下去。只有当从 channel c
上收到多个响应时才会退出循环 L
。
使其并行运行
注意这里如果有1000000万个文件,就修改为i == 1000000
就可以了