| 1 |
$Id: README,v 1.2 2004/01/18 19:41:44 mbuna Exp $ |
| 2 |
---------------------------------------------------------------- |
| 3 |
PEAK Library :: Parallel Events and Asynchronous tasKing Library |
| 4 |
---------------------------------------------------------------- |
| 5 |
|
| 6 |
Note: As it's not my natural language, english might not be perfect here or |
| 7 |
in the API documentation. Please, feel free to send me your fix if needed, so |
| 8 |
I can remove this notice :p |
| 9 |
|
| 10 |
Warning: The PEAK Library is an experimental C library in alpha stage. |
| 11 |
|
| 12 |
INTRODUCTION |
| 13 |
============ |
| 14 |
I started to write the peak library for the Undernet IRC proxy scanner, but |
| 15 |
not only to provide a support similar to existing libevents. Although already |
| 16 |
very efficients they are not taking the advantage of multiple CPUs. |
| 17 |
The peak library can process events in parallel with the help of a threads |
| 18 |
pool. For example, imagine 2 connected sockets receive an high amount of data |
| 19 |
to proceed, the master thread distributes the work to do in queues and launch |
| 20 |
them in parallel. It starts to be profitable if you have something to process |
| 21 |
by the CPU. In some ideal examples, I already have up to 50% speedup on a dual |
| 22 |
G4 for the same I/O events processed (dec 2003). |
| 23 |
Ok, but performances are not all. libpeak should be used, so it provides an |
| 24 |
objected-oriented API, although written in C. For that, it has its own very |
| 25 |
light runtime system, with retain/release support of objects, like in the |
| 26 |
objective-C language. A wrapper in C++ is easily doable and it's a project for |
| 27 |
the future. Like another libevent library, the peak library needs an I/O |
| 28 |
multiplexing engine to work, so it needs at least select() (which is standard), |
| 29 |
but supports poll(), epoll(), solaris /dev/poll and kqueue(), the three last |
| 30 |
being a lot more efficients! Today, the peak library is almost a framework now, |
| 31 |
as it provides a memory allocation convenience API, signals handling, and even |
| 32 |
a dictionary for peak's objects or simple things like strings. |
| 33 |
|
| 34 |
One current restriction of the peak library can be the architectures supported. |
| 35 |
As it uses some assembly code for processor's atomic and spinlock operations, |
| 36 |
only powerpc, sparc and x86 are at the moment supported. Addition of other CPUs |
| 37 |
is only a question of time (it should be easy). |
| 38 |
|
| 39 |
REQUIREMENTS |
| 40 |
============ |
| 41 |
See the README.platforms file in the distribution to see if your system |
| 42 |
is supported before trying to install. |
| 43 |
|
| 44 |
INSTALLATION |
| 45 |
============ |
| 46 |
See the INSTALL file in the distribution. |
| 47 |
|
| 48 |
MORE INFO |
| 49 |
========= |
| 50 |
Please visit http://peak.sourceforge.net for more info about libpeak. |