removed comments

This commit is contained in:
portnoytmy 2025-06-03 01:57:27 +02:00
parent e2f3584f47
commit 9e3a746ebf
5 changed files with 24 additions and 167 deletions

View file

@ -3,43 +3,31 @@
#include <random>
#include <chrono>
/**
* Startet alle Threads des Netzwerks
* @param num_sensors Anzahl der Sensor-Threads
* @param num_analysers Anzahl der Analyse-Threads
*/
template <size_t N>
void SensorNetwork<N>::start(size_t num_sensors, size_t num_analysers) {
running = true;
// Starte Sensor-Threads
for(size_t i = 0; i < num_sensors; ++i) {
sensors.emplace_back([this, i] {
sensor_thread(i);
});
}
// Starte Analyse-Threads
for(size_t i = 0; i < num_analysers; ++i) {
analysers.emplace_back([this, i] {
analyser_thread(i);
});
}
// Starte Controller-Thread
controller = std::thread([this] {
controller_thread();
});
}
/**
* Stoppt alle Threads und wartet auf Beendigung
*/
template <size_t N>
void SensorNetwork<N>::stop() {
running = false;
// Warte auf Thread-Ende
for(auto& t : sensors) {
if (t.joinable()) t.join();
}
@ -51,29 +39,18 @@ void SensorNetwork<N>::stop() {
}
}
/**
* Thread-Funktion für Sensoren (Producer)
* @param id Eindeutige ID des Sensors
*
* Funktionsweise:
* 1. Generiert zufällige Messwerte
* 2. Wartet zufällige Zeit (Messintervall)
* 3. Schreibt Daten in Ringpuffer
*/
template <size_t N>
void SensorNetwork<N>::sensor_thread(int id) {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> data_gen(0, 100); // Messwerte 0-100
std::uniform_int_distribution<> sleep_gen(100, 500); // Intervall 100-500ms
std::uniform_int_distribution<> data_gen(0, 100);
std::uniform_int_distribution<> sleep_gen(100, 500);
while(running) {
// Simuliere Messintervall
std::this_thread::sleep_for(
std::chrono::milliseconds(sleep_gen(gen))
);
// Generiere und schreibe Messwert
int value = data_gen(gen);
buffer.push(value);
@ -81,22 +58,11 @@ void SensorNetwork<N>::sensor_thread(int id) {
}
}
/**
* Thread-Funktion für Analyse-Module (Consumer)
* @param id Eindeutige ID des Moduls
*
* Funktionsweise:
* 1. Liest Daten aus Ringpuffer (blockierend)
* 2. Liest aktuelles Analysemodell
* 3. Verarbeitet Daten (hier nur Ausgabe)
*/
template <size_t N>
void SensorNetwork<N>::analyser_thread(int id) {
while(running) {
// Blockierendes Lesen aus Puffer
int data = buffer.pop();
// Lesender Zugriff auf Analysemodell
int model_value = model.read();
std::cout << "Analyser " << id << " processed: " << data
@ -104,27 +70,18 @@ void SensorNetwork<N>::analyser_thread(int id) {
}
}
/**
* Thread-Funktion für System-Controller (Writer)
*
* Funktionsweise:
* 1. Wartet zufällige Zeit zwischen Updates
* 2. Schreibt neuen Wert ins Analysemodell
*/
template <size_t N>
void SensorNetwork<N>::controller_thread() {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> update_gen(0, 100); // Modellwerte
std::uniform_int_distribution<> sleep_gen(500, 2000); // Update-Intervall
std::uniform_int_distribution<> update_gen(0, 100);
std::uniform_int_distribution<> sleep_gen(500, 2000);
while(running) {
// Warte bis zum nächsten Update
std::this_thread::sleep_for(
std::chrono::milliseconds(sleep_gen(gen))
);
// Aktualisiere Analysemodell
int new_value = update_gen(gen);
model.write(new_value);
@ -132,7 +89,6 @@ void SensorNetwork<N>::controller_thread() {
}
}
// Explizite Instanziierung für gängige Puffergrößen
template class SensorNetwork<8>;
template class SensorNetwork<16>;
template class SensorNetwork<32>;
template class SensorNetwork<32>;