… | |
… | |
4625 | above. This reduces dependencies and makes libev faster. |
4625 | above. This reduces dependencies and makes libev faster. |
4626 | |
4626 | |
4627 | =item EV_ATOMIC_T |
4627 | =item EV_ATOMIC_T |
4628 | |
4628 | |
4629 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
4629 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
4630 | access is atomic and serialised with respect to other threads or signal |
4630 | access is atomic with respect to other threads or signal contexts. No |
4631 | contexts. No such type is easily found in the C language, so you can |
4631 | such type is easily found in the C language, so you can provide your own |
4632 | provide your own type that you know is safe for your purposes. It is used |
4632 | type that you know is safe for your purposes. It is used both for signal |
4633 | both for signal handler "locking" as well as for signal and thread safety |
4633 | handler "locking" as well as for signal and thread safety in C<ev_async> |
4634 | in C<ev_async> watchers. |
4634 | watchers. |
4635 | |
4635 | |
4636 | In the absence of this define, libev will use C<sig_atomic_t volatile> |
4636 | In the absence of this define, libev will use C<sig_atomic_t volatile> |
4637 | (from F<signal.h>), which is usually good enough on most platforms, |
4637 | (from F<signal.h>), which is usually good enough on most platforms. |
4638 | although strictly speaking using a type that also implies a memory fence |
|
|
4639 | is required. |
|
|
4640 | |
4638 | |
4641 | =item EV_H (h) |
4639 | =item EV_H (h) |
4642 | |
4640 | |
4643 | The name of the F<ev.h> header file used to include it. The default if |
4641 | The name of the F<ev.h> header file used to include it. The default if |
4644 | undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be |
4642 | undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be |