我对libevent事件优先级有一些疑问
1什么是优先号码范围?
在手册中 2,它说By default, libevent assigns the middle priority to all events unless their priority is explicitly set.
那么确切的默认优先级是多少?
3当优先级更高时,数字是小还是大?
4在libevent中有两个与事件优先级相关的函数。
event_priority_init()
和event_priority_set
,它们之间有什么区别?
5 event_priority_set(struct event * ev,int pri)的返回值是什么?我注意到一篇文章说的是:when an event is ready, it can't be set and calling of this function returns -1
。我真的不明白这是什么意思?任何人都可以解释一下吗?谢谢!
6可以在注册后修改事件优先级。例如,在开始时,我将优先级设置为10,稍后我将其设置为5,然后将其设置为10,blalba
顺便说一句:目前,我的 base = event_init(); event_base_priority_init(base,4);event_set(ev, sockfd, EV_READ, callback, arg);
event_base_set(base, ev);
event_add(ev, NULL);
event_priority_set(&ev, 2);
.....
// set and add some other events
....
event_base_dispatch(base);
它运行没有错误,但我不知道event_priority_set(&ev, 2)
的位置是否正确,所以我不知道是否设置了优先级。
答案 0 :(得分:1)
在这里,你没有找到答案,但是在尼克写的伟大着作中找不到答案:
http://www.wangafu.net/~nickm/libevent-book/Ref4_event.html
1 /您可以通过调用event_base_priority_init()来设置范围。
2 /如果您没有设置优先级,"默认值是事件库中队列的数量除以2。"
3 /较低的数字是较高的优先级。
4 /您应该使用event_base_priority_init()而不是不推荐使用的event_priority_init()。 event_base_priority_init()设置基数的优先级,而event_priority_set()设置事件的优先级。
5 /你不能在已添加到事件循环(event_add())上使用event_priority_set()。
6 /您需要首先使用event_del()从事件循环中删除它。