并发编程 --- select
来源:互联网 发布:网络中py是什么意思 编辑:程序博客网 时间:2024/05/21 13:26
select
1> select可以实现无阻塞的多通道尝试读写,以及阻塞超时。
var c, c1, c2, c3 chan int
var i1, i2 int
select {
case i1 = <-c1: //如果能走通任何case则随机走一个
print( "received ", i1, " from c1\n" )
case c2 <- i2:
print( "sent ", i2, " to c2\n" )
case i3, ok := (<-c3):
if ok {
print( "received ", i3, " from c3\n" )
} else {
print( "c3 is closed\n")
}
default: // 如果case都阻塞,则走default,如果无default,则阻塞在case
// default中可以不读写任何通道,那么只要default提供不阻塞的出路,就相当于实现了对case的无阻塞尝试读写
print( "no communication\n")
}
2> 实现阻塞超时的方法是,只要不给default出路,而在case中实现一个超时
timeout := make (chan bool, 1)
go func () {
time.Sleep(1e9) // 这是等待1秒钟
timeout <- true
}()
// 用timeout这个通道作为阻塞超时的出路
select {
case <-ch:
// 处理从ch中读到的数据
case <-timeout:
// 如果case都阻塞了,那么1秒钟后会从这里找到出路
}
0 0
- 并发编程 --- select
- go语言并发编程之select
- linux网络编程并发进程,select和epoll(一)
- linux网络编程并发进程,select和epoll(二)
- Linux select TCP并发服务器与客户端编程
- 网络编程 并发执行 线程 进程 IO复用 select poll
- Linux select TCP并发服务器与客户端编程
- Select+Update并发处理
- Select实现并发服务器
- select实现并发服务器
- 并发服务器select
- select编程
- UNIX网络编程——select函数的并发限制和 poll 函数应用举例
- UNIX网络编程——select函数的并发限制和 poll 函数应用举例
- Linux网络编程之socket:使用select函数实现并发处理
- Linux网络编程之socket:select函数的并发限制与poll函数
- Unix网络编程(七)使用select来实现服务器的并发
- Linux网络编程——tcp并发服务器(I/O复用之select)
- 关于eclipse中编辑struts.xml文件没有提示
- linux下安装编译工具没有空间
- 求一个数的最大公约数的三种思路——解题笔记
- python程序中Connect error: No route to host(errno:113) 连接错误解决办法--关闭iptables防火墙
- linux端口转发
- 并发编程 --- select
- 在iOS中创建静态库
- NDK 崩溃查找方法
- 导入shape文件到SDE数据库
- oracle日期取年、月、日字段值
- 函数指针
- Word怎么转换到PDF格式的文件
- java 内部类详解
- [LeetCode]120.Triangle