Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1039|回复: 0
打印 上一主题 下一主题

linux下实现select(),poll(),epoll() I/O多路复用

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2019-2-25 16:03:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 java 于 2019-2-26 11:27 编辑

Unix
cc  Unix的c语言编译器,是 c compiler 的缩写

Linux
cc 指向 gcc 兼容 Unix下写的代码,cc是gcc符号连接,可以通过$ls –l /usr/bin/cc来简单察看,该变量是make程序的内建变量
gcc 是GNU compiler collection的缩写,注意这是一个编译器集合,不仅仅是c或c++

g++(C++的编译器) 编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。
后缀为.c的文件gcc把它当做c程序,g++当做c++程序。
所以我们通常用g++来进行连接(g++会自动连接c++常用库),所以为了使用方便对于cpp程序干脆编译链接统统都使用g++。

deepin下默认 cc gcc和 g++如下:
相关符号连接如下:
cc 指向 gcc
/usr/bin/cc -> /etc/alternatives/cc
/etc/alternatives/cc -> /usr/bin/gcc
/usr/bin/gcc -> gcc-7
/usr/bin/gcc-7 -> x86_64-linux-gnu-gcc-7
/usr/bin/x86_64-linux-gnu-gcc-7

g++(C++的编译器)
/usr/bin/g++ -> g++-7
/usr/bin/g++-7 -> x86_64-linux-gnu-g++-7
/usr/bin/x86_64-linux-gnu-g++-7

查看deepin系统 linux内核
uname -r
4.15.0-29deepin-generic





select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作。
但select(),poll(),epoll()本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。
I/O 多路复用的最大优势是系统开销小,系统不需要建立新的进程或者线程,也不必维护这些线程和进程。




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-30 22:44 , Processed in 0.056716 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表