读某些文件时,如果文件没有数据的话,往往会导致读操作会阻塞(休眠)。比如 ①读鼠标、键盘等字符设备文件 读键盘阻塞 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 5 int main(void) 6 { 7 char ...
分类:
其他好文 时间:
2018-08-09 21:09:46
阅读次数:
158
IO流(高级) 释放资源的标准代码 主要考虑的是在什么时候释放资源比较合适.而且在jdk1.7之前和之后是不同的. package com.wzlove.demo; import java.io.FileReader; import java.io.FileWriter; import java.i ...
分类:
编程语言 时间:
2018-07-24 19:17:45
阅读次数:
166
一、在前面讲过的回射客户/服务器程序中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就f ...
分类:
其他好文 时间:
2018-02-26 15:15:41
阅读次数:
210
3.6.1.非阻塞IO 3.6.1.1、阻塞与非阻塞 阻塞:阻塞具有很多优势(是linux系统的默认设置),单路IO的时候使用阻塞式IO没有降低CPU的性能 补充:阻塞/非阻塞, 它们是程序在等待消息(无所谓同步或者异步)时的状态. 阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果 ...
分类:
系统相关 时间:
2017-09-29 16:29:21
阅读次数:
233
背景: write函数把内存中的数据写入文件描述符,通常这些数据是内存中的连续区域,如果我们应用程序需要把内存中多个非连续区域的数据写入文件描述符,那么需要多次调用write函数,如果文件描述符是socket,那么需要发送多个数据包。这种情况下,write函数效率比较低。 writev将多个数据存储 ...
分类:
系统相关 时间:
2017-06-04 10:47:12
阅读次数:
177
我们知道。对于一个套接字的读写(read/write)操作默认是堵塞的。假设当前套接字还不可读/写,那么这个操作会一直堵塞下去,这样对于一个须要高性能的server来说,是不能接受的。所以,我们能够在进行读写操作的时候能够指定超时值,这样就读写操作就不至于一直堵塞下去。 在涉及套接字的I/O操作上设 ...
分类:
其他好文 时间:
2017-05-20 12:31:17
阅读次数:
171
1 高级io 2 3 一、阻塞/非阻塞 4 假错: 5 block EINTR 6 non-block EAGAIN 7 open(); 8 read(); 9 write(); 10 lseek(); 11 close(); 12 13 编程思想 14 ... ...
分类:
其他好文 时间:
2017-04-17 20:02:51
阅读次数:
255
1、位移输出函数(8位) 输入value数据后Arduino会自动把数据移动分配到8个并行输出端. 其中dataPin为连接DS的引脚号, clockPin为连接SH_CP的引脚号, bitOrder为设置数据位移顺序, 分别为高位先入MSBFIRST或者低位先入LSBFIRST。 //******... ...
分类:
其他好文 时间:
2016-11-12 13:51:52
阅读次数:
259
1、1、非阻塞IO1.阻塞与非阻塞(1)阻塞:就是当前的函数要执行的话,需要某些条件,但是没有达到,就被阻塞住,内核挂起,当前进程暂停。CPU被拿去运行别的进程了。比如父进程执行wait这个阻塞函数,等待子进程结束后,去回收子进程剩余的8KB内存资源,如果这个时候子进程没有结..
分类:
其他好文 时间:
2016-11-10 15:00:07
阅读次数:
160
1、fopen和open区别 1 前者属于低级IO,后者是高级IO。 2 前者返回一个文件描述符,后者返回一个文件指针。 3 前者无缓冲,后者有缓冲。 4 前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。 5 后者是在前者的基础上扩充而来的,在大多数情况下 ...
分类:
其他好文 时间:
2016-09-04 20:34:42
阅读次数:
107