为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于select函数可否等待多个信号量?

请问关于select函数可否等待多个信号量?

慕姐4208626 2019-09-20 15:14:12
select函数可否等待多个信号量
查看完整描述

5 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv,recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使用selcet函数就可以实现非阻塞编程。selcet函数是一个轮循函数,即当循环询问文件节点,可设置超时时间,超时时间到了就跳过代码继续往下执行。Select的函数格式:intselect(intmaxfdp,fd_set*readfds,fd_set*writefds,fd_set*errorfds,structtimeval*timeout);select函数有5个参数第一个是所有文件节点的最大值加1,如果我有三个文件节点1、4、6,那第一个参数就为7(6+1)第二个是可读文件节点集,类型为fd_set。通过FD_ZERO(&readfd);初始化节点集;然后通过FD_SET(fd,&readfd);把需要监听是否可读的节点加入节点集第三个是可写文件节点集中,类型为fd_set。操作方法和第二个参数一样。第四个参数是检查节点错误集。第五个参数是超时参数,类型为structtimeval,然后可以设置超时时间,分别可设置


查看完整回答
反对 回复 2019-09-22
?
BIG阳

TA贡献1859条经验 获得超6个赞

sql的语法就是这样用的 as也是可以省略的
如select 老列名 新列名 from 表
如果只是一张表 通常直接就select 列名 from 表
起别名经常是多表联合查询的情况下用

查看完整回答
反对 回复 2019-09-22
?
UYOU

TA贡献1878条经验 获得超4个赞

as 别名 ,这边的别名是你查询出来时显示的名字,并不是给数据库中的表改名
as 表名时,可以这样 select * from 表 a where a.字段=。。。
这样的话如果表名比较长,不用每次都打一长串,直接用a就可以了

查看完整回答
反对 回复 2019-09-22
  • 5 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信