In Zeiten von Mehrkern-Prozessoren und der damit verbundenen Möglichkeit Programmcode parallel in Threads auszuführen, wird es zunehmend wichtiger Daten so schnell wie möglich zwischen Threads austauschen zu können, um die darunter liegenden Prozessoren so effizient wie möglich zu nutzen. Eine Bibliothek, welche diese Aufgabe in Java bewältigen soll ist LMAX Disruptor. Das hier entwickelte Konzept erlaubt es einen Thread zu starten, mit welchem mittels Events kommuniziert werden kann (siehe Beispiel). Da der verwendete Ringbuffer mittels Java Generics nur eine einzige Art von Event verarbeiten kann, eignet er sich jedoch nicht gut für Fälle in denen verschiedene Arten von Events auftreten können und verarbeitet werden müssen. Ziel dieser Arbeit ist es eine Bibliothek ähnlich zum LMAX Disruptor zu implementieren, welche generische Events verarbeiten kann. Hierbei soll zudem eine Event Loop implementiert werden, welche in mehreren Stufen langsamer (durch bspw. Yieding) oder schneller (Busy Waiting) arbeiten kann. Falls beispielsweise aktuell keine eingehenden Events verarbeitet werden, soll die Event Loop dementsprechend langsamer werden bzw. die Kontrolle abgeben, um nicht unnötige CPU-Zeit zu verschwenden. Ebenso soll es möglich sein die Event Loop "aufzuwecken", falls sie sich gerade im "Schlafzustand" befindet, sodass ankommende Events zeitnah verarbeitet werden. Im Anschluss an die Implementierung, soll zudem eine Evaluioerung mittels des Java Microbenchmark Harness stattfinden sowie die Ergebnisse grafisch dargestellt werden.
|