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

      

  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/9225045.html
Copyright © 2011-2022 走看看