zoukankan      html  css  js  c++  java
  • libevent使用event_new和不使用的两种方法

    写两个简单的demo,对照一下各自的方法

    #include <sys/types.h>
    
    #include <event2/event-config.h>
    
    #include <sys/stat.h>
    #ifndef _WIN32
    #include <sys/queue.h>
    #include <unistd.h>
    #include <sys/time.h>
    #else
    #include <winsock2.h>
    #include <windows.h>
    #endif
    #include <signal.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <event.h>
    #include <event2/event.h>
    
    int called = 0;
    
    static void
    signal_cb(evutil_socket_t fd, short event, void *arg)
    {
        struct event *signal = arg;
    
        printf("signal_cb: got signal %d
    ", event_get_signal(signal));
    
        if (called >= 2)
            event_del(signal);
    
        called++;
    }
    
    int
    main(int argc, char **argv)
    {
        struct event signal_int;
        struct event_base* base;
    #ifdef _WIN32
        WORD wVersionRequested;
        WSADATA wsaData;
    
        wVersionRequested = MAKEWORD(2, 2);
    
        (void) WSAStartup(wVersionRequested, &wsaData);
    #endif
    
        /* Initalize the event library */
    //     base = event_base_new();
    // 
    //     /* Initalize one event */
    //     signal_int = evsignal_new(base, SIGINT, signal_cb, event_self_cbarg());
        event_init();
        event_set(&signal_int, SIGINT, EV_SIGNAL, signal_cb, (void *)&signal_int);
        event_add(&signal_int, NULL);
    
        event_dispatch();
        //event_free(signal_int);
        //event_base_free(base);
    
        return (0);
    }
    #include <sys/types.h>
    
    #include <event2/event-config.h>
    
    #include <sys/stat.h>
    #ifndef _WIN32
    #include <sys/queue.h>
    #include <unistd.h>
    #include <sys/time.h>
    #else
    #include <winsock2.h>
    #include <windows.h>
    #endif
    #include <signal.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    
    #include <event2/event.h>
    
    int called = 0;
    
    static void
    signal_cb(evutil_socket_t fd, short event, void *arg)
    {
    	struct event *signal = arg;
    
    	printf("signal_cb: got signal %d
    ", event_get_signal(signal));
    
    	if (called >= 2)
    		event_del(signal);
    
    	called++;
    }
    
    int
    main(int argc, char **argv)
    {
    	struct event *signal_int;
    	struct event_base* base;
    #ifdef _WIN32
    	WORD wVersionRequested;
    	WSADATA wsaData;
    
    	wVersionRequested = MAKEWORD(2, 2);
    
    	(void) WSAStartup(wVersionRequested, &wsaData);
    #endif
    
    	/* Initalize the event library */
    	base = event_base_new();
    
    	/* Initalize one event */
    	signal_int = evsignal_new(base, SIGINT, signal_cb, event_self_cbarg());    //evsignal_new内部调用了event_new
        event_add(signal_int, NULL); 
        event_base_dispatch(base);
        event_free(signal_int);
        event_base_free(base); return (0);
    }

      

  • 相关阅读:
    Git_创建版本库
    Git_安装Git
    Git_集中式vs分布式
    Git_git的诞生
    echartShow
    微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的
    vue2.0 $router和$route的区别
    vue移动端开发全家桶
    干货分享:vue2.0做移动端开发用到的相关插件和经验总结
    优秀的基于VUE移动端UI框架合集
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/9225045.html
Copyright © 2011-2022 走看看