1-理解IO复用-阻塞与非阻塞-深入理解Linux中网络I/O复用并发模型
热门回复:
- 想吃小鱼干er:收藏从未停止,学习从未开始[妙啊]
- darklowly:快递这个例子有误导性。
如果是阻塞等待方式,是不可能有多个快递员同时到来。阻塞等待的方式,只能通过多线程的方式才能可能有多个快递同时到来,然后不同的线程处理不同的快递。
- 潮汐星河:我在《linux高性能服务器框架》那本书中间部分迷失了,完全啃不动。看到大佬的讲解豁然开朗,大佬逻辑清晰,深入浅出,实在是精品!
- 不想吃芹菜の:问下有几个计算fd的函数,怎么在syscall里面没有
```
var (
maxFd int //select 函数的最大值的fd
listenFd int //listen的fd
err error
)
//创建socket
listenFd, err = syscall.Socket(syscall.AF_INET, syscall.O_NONBLOCK|syscall.SOCK_STREAM, 0)
if err!=nil{
log.Fatalln(err)
}
defer syscall.Close(listenFd)
//绑定IP和PORT
addr := syscall.SockaddrInet4{Port: 8888}
copy(addr.Addr【:】, net.ParseIP("0.0.0.0").To4())
err = syscall.Bind(listenFd, &addr)
if err!=nil{
log.Fatalln(err)
}
//函数定义 man 2 listen查看linux定义
err = syscall.Listen(listenFd, 10)
if err!=nil{
log.Fatalln(err)
}
//读事件的集合
rfdSet := &syscall.FdSet{}
//FD_ZERO //初始化
//FD_CLT
//FD_SET
//FD_INSET
for true{
_, err := syscall.Select(maxFd+1,rfdSet,nil,nil,nil)
if err!=nil{
break
}
}
```
- 娘子怎样:这么多好视频都被哪些培训狗的视频给湮灭了