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. |