Sierpień 17th, 2007 by Arek Kuryłowicz | Posted in Linux | No Comments »
Dla frajdy cały weekend poświęciłem na rozwijanie swoich umiejętności programowania w Perlu. Perl! Totalny oldshool - kto dziś tego używa? pewno ktoś zapyta. Nie wiem, ale Perl wydaje się na tyle ciekawym językiem programowania, aby zapoznać się z nim trochę.
Na pierwszy ogień poszedł bot GG. Założenia:
- boot powinien pracować jako pooler wiadomości dokładanych do bazy danych przez zewnętrzne aplikacje.
- boot powinien obsługiwać komunikaty wysłane do niego od innych użytkowników.
- bot powinien mieć możliwośc dołożenia dodatkowych protokołów (Jabber)
Implementacja obsługi GG poszła szybko za sprawą linuxowej biblioteki LibGadu oraz perlowej nakładki na nią czyli Net::Gadu. Problemy pojawiły się później. Po zaimplementowaniu obsługi GG postanowiłem zabrać się za wątki, gdyż jest to jedyny sensowny sposób oprogramowania moich założeń. Niestety okazało się, iż nie sposób wymieniać dane między wątkiem głównym a wątkami potomnymi. Przypuszczam, że spowodowane jest to właściwościami samego obiektu klasy Net::Gadu. Postanowiłem zatem wspomóc się mechanizmami pamięci współdzielonej. Implementacja poszła bezproblemowo, niestety okazało się, iż iterujące w pętli nieskończonej oczekiwanie na komunikat przez obiekt GG niemiłosiernie obciąża system kiedy odwołuje się do obiektu w pamięci współdzielonej.
Przyznam, że nie wiem jak rozwiązać ten problem. W chwili wolnego czasu spróbuję nad tym popracować.