eventfd与线程间通信
来源:互联网 发布:证券公司排名 知乎 编辑:程序博客网 时间:2024/06/04 20:13
一. evenfd介绍
eventfd是linux新加入的API(自2.26.22), 为用户空间的应用程序提供等待(wait)/通知(notify)机制, 函数eventfd创建的fd可以加入epoll。函数原型:
1. int eventfd_read(int fd, eventfd_t *val); eventfd_t 是64位
2. int eventfd_write(int fd, eventfd_t val); 此处的val值由调用者指定
3. int eventfd(unsigned int initval, int flags);
(1) return: fd, error -1;
(2) initval: 见下面;
(3) flags : EFD_CLOEXEC, 没玩过,不解释;
EFD_NONBLOCK, 设置fd为 非阻塞,省去使用fcntl的麻烦;
EFD_SEMAPHORE, 如果没设置此标志位,eventfd_read的val值是前面所有evenfd_write写入val值的和
+ initval;如果设置此标志位,evenfd_read读一次val减1直到为0;
二. 用eventfd实现pthread通信
typedef struct tagMSG
{
void *pada;
}MSG_S;
/*
*/
int queue_create(void)
{
return eventfd(0, EFD_NONBLOCK | EFD_SEMAPHORE);
}
int queue_read(int iEvFd, MSG_S *pstMsg)
{
eventfd_t stVal;
return eventfd_read(iEvFd, &stVal);
}
int queue_write(int iEvFd, MSG_S *pstMsg)
{
eventfd_t stVal =1;
return eventfd_write(iEvFd, stVal);
}
,,
- eventfd与线程间通信
- linux-muduo线程通信eventfd
- linux-线程/进程通信eventfd
- 用 eventfd 在线程之间通信
- 用 eventfd 在线程之间通信
- 线程与线程间通信
- 最高效的进(线)程间通信机制--eventfd
- 最高效的进(线)程间通信机制: eventfd
- 进程间通信与线程间通信
- 进程间通信与线程间通信
- 进程间通信与线程间通信
- 进程间通信与线程间通信
- 进程间通信与线程间通信 .
- 进程间通信与线程间通信
- 进程间通信与线程间通信
- 线程间通信与进程间通信
- 进程间通信与线程间通信
- 进程间通信与线程间通信
- Android简介
- hdu4982(思维题)
- HDU 3746 Cyclic Nacklace
- VS2012快捷键大全
- win 7 64位安装oracle 11g前须知
- eventfd与线程间通信
- LIstView中CheckedTextView的应用
- Big Number
- SDUTOJ Message Flood (STL容器求解)
- 接上面极光推送提到的原生推送(APNS)
- Linux系统最大进程数和单进程最大线程数
- 获取SELinux TYPE
- Search in Rotated Sorted Array
- 傅立叶变换及频谱图