… | |
… | |
2097 | { |
2097 | { |
2098 | sometype data; |
2098 | sometype data; |
2099 | |
2099 | |
2100 | // no locking etc. |
2100 | // no locking etc. |
2101 | queue_put (data); |
2101 | queue_put (data); |
2102 | ev_async_send (DEFAULT_LOOP, &mysig); |
2102 | ev_async_send (DEFAULT_ &mysig); |
2103 | } |
2103 | } |
2104 | |
2104 | |
2105 | static void |
2105 | static void |
2106 | mysig_cb (EV_P_ ev_async *w, int revents) |
2106 | mysig_cb (EV_P_ ev_async *w, int revents) |
2107 | { |
2107 | { |
… | |
… | |
2138 | // only need to lock the actual queueing operation |
2138 | // only need to lock the actual queueing operation |
2139 | pthread_mutex_lock (&mymutex); |
2139 | pthread_mutex_lock (&mymutex); |
2140 | queue_put (data); |
2140 | queue_put (data); |
2141 | pthread_mutex_unlock (&mymutex); |
2141 | pthread_mutex_unlock (&mymutex); |
2142 | |
2142 | |
2143 | ev_async_send (DEFAULT_LOOP, &mysig); |
2143 | ev_async_send (DEFAULT_ &mysig); |
2144 | } |
2144 | } |
2145 | |
2145 | |
2146 | static void |
2146 | static void |
2147 | mysig_cb (EV_P_ ev_async *w, int revents) |
2147 | mysig_cb (EV_P_ ev_async *w, int revents) |
2148 | { |
2148 | { |
… | |
… | |
2695 | be detected at runtime. |
2695 | be detected at runtime. |
2696 | |
2696 | |
2697 | =item EV_ATOMIC_T |
2697 | =item EV_ATOMIC_T |
2698 | |
2698 | |
2699 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2699 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2700 | access is atomic with respect to other threads or signal contexts. No such type |
2700 | access is atomic with respect to other threads or signal contexts. No such |
2701 | is easily found using, so you cna provide your own type that you know is safe. |
2701 | type is easily found in the C language, so you can provide your own type |
|
|
2702 | that you know is safe for your purposes. It is used both for signal handler "locking" |
|
|
2703 | as well as for signal and thread safety in C<ev_async> watchers. |
2702 | |
2704 | |
2703 | In the absense of this define, libev will use C<sig_atomic_t volatile> |
2705 | In the absense of this define, libev will use C<sig_atomic_t volatile> |
2704 | from F<signal.h>, which is usually good enough on most platforms. |
2706 | (from F<signal.h>), which is usually good enough on most platforms. |
2705 | |
2707 | |
2706 | =item EV_H |
2708 | =item EV_H |
2707 | |
2709 | |
2708 | The name of the F<ev.h> header file used to include it. The default if |
2710 | The name of the F<ev.h> header file used to include it. The default if |
2709 | undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be |
2711 | undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be |