Zitat von
hirnfrei
Das mit Threat klingt interessant.
Ich hab mal auf die schnelle was zusammengeschrieben, ist jetzt aber mit Visual Studio 2015:
Code:
// WorkerThread.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
std::mutex g_mutex;
void console_out(const std::string& text)
{
std::lock_guard<std::mutex> lock(g_mutex);
std::cout << text << std::endl;
}
class Worker
{
private:
bool m_Run;
int m_Counter;
public:
Worker() : m_Run(true), m_Counter(0)
{}
void Stop()
{
m_Run = false;
}
void Reset()
{
m_Counter = 0;
}
void operator()()
{
while (m_Run) // Hier ist die "Loop" !
{
console_out(std::to_string(m_Counter++));
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
}
};
int main()
{
Worker worker;
std::thread t(std::ref(worker));
for (;;)
{
std::string input;
std::getline(std::cin, input);
if (input == "exit")
{
worker.Stop();
break;
}
else if (input == "reset")
{
worker.Reset();
}
else
{
console_out("unknown command");
}
}
if (t.joinable())
{
t.join();
}
return 0;
}
mit
Code:
// stdafx.h: Includedatei für Standardsystem-Includedateien
// oder häufig verwendete projektspezifische Includedateien,
// die nur in unregelmäßigen Abständen geändert werden.
//
#pragma once
#include "targetver.h"
#include <tchar.h>
// TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
#include <string>
#include <mutex>
#include <thread>
#include <iostream>
Lesezeichen