ちょっと:)それは実際には実用的な例ではありません。ちょうどいくつかのことをテストすることです。複数の無限スレッド
スレッドは、ランダムにデータを作成し、このデータを別の受信者オブジェクトに送信する独立した入力オブジェクトを表すものとします。
私の問題は、私は彼らが無限の時間のためのデータを作成したいということです。しかし、最初のスレッドを開始すると、whileループの原因が突き当たります。
それはどのように複数の無限のスレッドを開始することは可能でしょうか?
クラス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();
}
}
'A :: DoWork()'から 'T :: join();'行を削除します。 – Leon
これでエラーが表示されます:R6010 - abort()が呼び出されました – Chris
代わりに 'T.detach()'を入れてください。 – Leon