我有以下结构:
DB::insert('call tblusers (?,?,@id)',array($req->email,Hash::make(($req->password))))
我有一系列这样的结构。
struct myfds_for_nic {
int fd1;
int fd2;
int fd3;
int fd4;
int fd5;
netinfo *nic_info;
};
每个结构有5个fds,我有1000个这样的条目。我想将所有这些fds添加到一个epoll实例中。由于struct myfds_for_nic nic_table[1000];
的字段,我可以传递fd或指向我的数据的指针。我正在将指针传递给我的数据,如下所示
struct epoll_event event
在epoll_wait期间,当其中一个fds有一个事件时,我只会知道它是哪个条目但是如何找出条目下的哪个fd(5个fds中)实际上是可读/可写的?
答案 0 :(得分:1)
事件允许传递自定义数据。您可以通过以下方式之一使用它:
1)在结构中传递FD成员的地址,然后使用指针算法确定地址所属的数组中的哪个结构以及哪个FD。通过在2 ^ n边界上对齐结构,您可以使用位移和掩码或此。
2)在单个int中编码FD的结构索引和索引,例如index * 5 + fd。从中获取索引和fd是微不足道的。
3)为您添加的每个FD分配额外的struct { struct myfds_for_nic * nic; int num_fd; }
,填写并将其用作事件的数据。
选项2可能是最容易理解的,而选项3是最通用的。