P13 select 模型上

电脑承受进程数量 1核2GB 可以大约 100 多进程或线程 普通服务器大概是 10倍性能,即 1000 多进程或线程。 IO 多路复用能力 1个进程或线程可以使用多个 TCP。 单进程 select 可以 1024 单进程 poll 可以数千 单进程 epoll 可以百万 fdset 本质上是 int[32] 组成的 bitmap, 刚好对应 1024 个文件描述符。 参考 IO 多路复用 select 模型上

2023-09-24 · 1 min · 36 words · RamLife

Linux 串口的配置和读写

需求 需要在 linux 中配置好串口,并且通过串口收发数据 解决 打开串口 打开串口直接使用 open 函数即可,需要注意的是, flag 中的参数 O_NOCTTY, O_NDELAY. O_NOCTTY:告诉Unix这个程序不想成为“控制终端”控制的程序,不说明这个标志的话,任何输入都会影响你的程序。 O_NDELAY:告诉Unix这个程序不关心DCD信号线状态,即其他端口是否运行,不说明这个标志的话,该程序就会在DCD信号线为低电平时停止。但是在 man 中,是把 O_NDELAY 和 O_NONBLOCK 放在一起,并没有说明两者的区别,所以这这个参数的作用存疑。 open 时需要指定串口的串口号,比如 /dev/ttyS0 int OpenDevice(const char * dev) { int fd = 0; fd = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd < 0) { fprintf(stderr, "Can not open serial port %s", dev); return -1; } cout << "open " << dev << " Ok!" << endl; return fd; } if ((serial_fd = OpenDevice(kSerialName....

2023-03-13 · 4 min · 782 words · RamLife