Hey :) es ist nicht wirklich ein praktisches Beispiel. Es ist nur ein paar Dinge zu testen.Mehrere unendliche Threads
Die Threads sollen unabhängige Eingabeobjekte darstellen, die nach dem Zufallsprinzip Daten erzeugen und diese Daten an ein anderes Empfängerobjekt senden.
Mein Problem ist, dass ich möchte, dass sie Daten für eine unendliche Zeit erstellen. Aber wenn ich den ersten Thread starte, bleibt er wegen der While-Schleife hängen.
Wie ist es möglich, mehrere unendliche Threads zu starten?
Klasse A:
#pragma once
#include <iostream>
#include <thread>
class A
{
public:
A() : m_ID(-1) {}
A(int _ID) : m_ID(_ID) {}
~A() {}
public:
void DoWork()
{
std::thread T(&A::Work, this);
T.join();
}
private:
void Work()
{
while (true)
{
// do stuff
std::cout << m_ID << "\n";
}
}
private:
int m_ID;
};
main.cpp:
#include "A.h"
static const unsigned int s_NumberOfObjects = 5;
void main()
{
A As[s_NumberOfObjects];
for (size_t i = 0; i < s_NumberOfObjects; i++)
{
As[i] = A(i);
}
for (size_t i = 0; i < s_NumberOfObjects; i++)
{
As[i].DoWork();
}
}
Entfernen Sie die Zeile 'T.join();' aus 'A :: DoWork()' – Leon
dann bekomme ich den Fehler: R6010 - abort() wurde – Chris
aufgerufen Setzen Sie stattdessen eine 'T.detach()'. – Leon