我现在正在写一些事件代码(使用gevent在python中),我使用nginx作为Web服务器,我觉得两者都很棒.有人告诉我,事件有一个权衡,但无法看到它.有人可以解释一下吗?
詹姆士
我尝试了很多开源软件,我注意到开源世界中有相当数量的服务器类型应用程序使用libevent来促进基于事件的处理,而不是产生多个线程来处理请求.
我也做了很多.NET编程(这是我的核心工作函数),我有兴趣了解libevent与.NET事件模型的关系..NET中的事件是否相当于C程序的libevent?我是否应该尝试学习libevent并尝试在自定义.NET服务器应用程序中使用它,或者使用标准的.NET事件模型基本相同?
有没有人有关于使用Visual Studio 2008构建libevent-2.0.10的明确说明?
main函数基于libevent,但函数中有一个长期运行的任务.所以开始N踏步来完成任务.这个想法好吗?如何在C中一起使用libevent和pthread?
据我所知,为了使用libevent监视套接字, event_set()首先应该使用正确的参数调用.
libevent文档声明eventevent_set()的参数可以是EV_READ或EV_WRITE.并且此事件参数是要注意的事件.
但是EV_READ和EV_WRITE对应的套接字事件是什么?我的意思是我如何监视连接状态的变化,而不是监视传入的消息?
考虑libevent与libev.该libev库是否在Windows上具有IOCP的本机支持?
我能够用libevent制作一个简单的php websocket服务器,但是当我试图让它进行多处理时我就陷入了困境.
例如,这是单个处理
<?php
$socket = stream_socket_server ('tcp://0.0.0.0:2000', $errno, $errstr);
stream_set_blocking($socket, 0);
$base = event_base_new();
$event = event_new();
event_set($event, $socket, EV_READ | EV_PERSIST, 'ev_accept', $base);
event_base_set($event, $base);
event_add($event);
event_base_loop($base);
$GLOBALS['connections'] = array();
$GLOBALS['buffers'] = array();
function ev_accept($socket, $flag, $base) {
static $id = 0;
$connection = stream_socket_accept($socket);
stream_set_blocking($connection, 0);
$id += 1;
$buffer = event_buffer_new($connection, 'ev_read', NULL, 'ev_error', $id);
event_buffer_base_set($buffer, $base);
event_buffer_timeout_set($buffer, 30, 30);
event_buffer_watermark_set($buffer, EV_READ, 0, 0xffffff);
event_buffer_priority_set($buffer, 10);
event_buffer_enable($buffer, EV_READ | EV_PERSIST);
// we need to save both …Run Code Online (Sandbox Code Playgroud) 为什么这不起作用,文件test.c:
#include <event.h>
int main(void)
{
event_init();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后:
gcc -o test.o -c test.c运行正常,但是
链接:
g++ -o test -levent test.o生产
test.o: In function `main':
test.c:(.text+0x5): undefined reference to `event_init'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
所以它无法链接为C++.怎么解决这个?我需要链接它C++并编译为C.
我正在使用libevent进行程序,我在两台计算机A和B上编译我的程序,在A上执行成功,但在BI上遇到以下错误:
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
供参考:
A和B都带有fedora系统,在A和B上,我都下载了libevent-1.4.14b-stable.tar.gz,并通过configure/make/make install安装它.
在A上
[esolve@kitty temp]$ uname -r
3.6.10-2.fc16.x86_64
[esolve@kitty temp]$ ls -al /usr/local/lib64 | grep libevent
[esolve@kitty temp]$ ls -al /usr/lib64 | grep libevent
[esolve@kitty temp]$ ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 32 May 21 00:25 libevent-1.4.so.2 -> /usr/local/lib/libevent-1.4.so.2
[esolve@kitty temp]$ ls -al /usr/local/lib | grep libevent
lrwxrwxrwx 1 root root 21 May 21 00:22 libevent-1.4.so.2 …Run Code Online (Sandbox Code Playgroud)