当Linux线程被阻塞后,会发生以下情况:
一、基础概念
二、相关优势(从系统资源利用角度)
三、类型
四、应用场景
五、可能出现的问题及原因
六、解决线程阻塞相关问题的一般思路
epoll
(用于处理大量文件描述符的高效I/O事件通知机制)来实现非阻塞的网络I/O操作。select
实现简单的非阻塞I/O检查,这里以读取标准输入为例):#include <stdio.h>
#include <sys/select.h>
#include <unistd.h>
int main() {
fd_set readfds;
struct timeval tv;
int ret;
tv.tv_sec = 5;
tv.tv_usec = 0;
while (1) {
FD_ZERO(&readfds);
FD_SET(STDIN_FILENO, &readfds);
ret = select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv);
if (ret == -1) {
perror("select");
break;
} else if (ret) {
char buf[100];
fgets(buf, sizeof(buf), stdin);
printf("Read from stdin: %s", buf);
} else {
printf("No data in 5 seconds
");
}
}
return 0;
}
没有搜到相关的文章