epoll简介
Handler消息机制,在Java层的MessageQueue中,调用了native方法实现消息循环的休眠和唤醒(也就是线程的休眠和唤醒)。native方法nativePollOnce实现了消息循环的休眠,而方法nativeWake实现了消息循环的唤醒。
在native层,消息循环的休眠和唤醒使用了Linux内核的epoll机制和pipe。下面我们简单介绍一下epool机制是什么?
文件描述符
我们首先来介绍什么是文件描述符?
在Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。
内核利用文件描述符来访问文件,文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符,读写文件也需要使用文件描述符来指定待读写的文件。
pipe(管道)
pipe是Linux中最基本的一种IPC机制,可以用来实现进程、线程间通信。
特点:
- 调用pipe系统