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);
    }

      

  • 相关阅读:
    JSP基础语法:注释、Scriptlet、编译指令
    JDBC的LIKE书写规范
    AWT回顾篇
    1.五子棋预备知识
    对象的生命周期回顾篇
    学习activemq(2)写个简单的程序
    activemq in action(3)剖析JMS消息(转)
    activemq in action(1)
    学习activemq(3)
    hadhoop安装
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/9225045.html
Copyright © 2011-2022 走看看