C++ Threading

02/28/2013 18:11 Cyperghost#1
Ich habe da mal eine frage zu Threading in C++

Wie kann ich eine Thread Array starten?
ich weiß das ich in C# es z.B. so machen kann:)


Code:
Thread[] myThread;

myThread= new myThread[Convert.ToInt32(1)];
            for (int i = 0; i <= Convert.ToInt32(1) - 1; i++)
            {
                myThread[i] = new Thread(new myThread(funktion));
                myThread[i].Start();
            }
Danke schon mal:)
02/28/2013 18:23 Schlüsselbein#2
Unter boost gibts ne thread_group (oder so ähnlich) Klasse. Via Bordmitteln von C++(11) mal hier eine Möglichkeit:
Code:
#include <iostream>
#include <chrono>
#include <thread>
#include <vector>
#include <utility>
#include <mutex>

const int THREAD_COUNT = 8;
std::mutex MUTEX;

void func()
{
	std::lock_guard<std::mutex> lg(MUTEX);
	std::cout << "called from thread " << std::this_thread::get_id() << std::endl;
}

int main()
{
	std::vector<std::thread> vec;
	for(int i = 0; i < THREAD_COUNT; ++i)
	{
		std::thread t(&func);
		vec.push_back(std::move(t));
	}

	for(auto& t : vec)
	{
		t.join();
	}
}
02/28/2013 20:53 Delinquenz#3
Kann die Antwort meines Vorposters nur unterstreichen.. benutze immer Threads in Verbindung mit Vektoren - bisher erfolgreich.
03/01/2013 07:27 Cyperghost#4
ah Danke euch:)