Quellcode schrieb:
was heißt mehrere thread verwenden, sorry, wollte keine extra thread aufmachen
Hättest aber besser. Oder noch besser Google benutzt, dann wärst du zum Beispiel hier gelandet:
http://de.wikipedia.org/wiki/Thread_(Informatik)
Weiterführende Links kannst du ruhig auch anschauen.
@KessiMC,
Tut mir leid, hatte das mit dem shared_ptr falsch verstanden. Dachte, dass du in anderen Projekte den verwendest und nur hier zum ersten Mal nicht.
Naja, aber es ist immer noch äusserst schwer dir zu helfen. Probier vielleicht mal ein Log einzuführen und so viele Log-Einträge zu erzeugen wie möglich. Das Programm wird vielleicht extrem lahm, aber plötzlich findet man dann falsche Ausgaben, bzw. welche die nicht vorkommen sollten und trotzdem da sind. Dann kann man anfangen die Sache zurück zu verfolgen.
Einfache Log-Möglichkeit, zum Beispiel damit:
class CLog
{
// Static functions //
public:
static CLog& get_instance() { static CLog Log; return Log; };
// Typedefs //
private:
typedef boost::lock_guard<boost::mutex> t_Sync;
// Attributes //
private:
std::fstream m_Output;
boost::mutex m_Mutex;
// Constructor & Destructor //
protected:
CLog()
: m_Output("C:/log.txt") // oder was auch immer
, m_Mutex()
{ }
public:
~CLog() { };
// Methods //
public:
template<typename T>
void write(T const& rValue, bool bNewLine = true) { t_Sync S(m_Mutex); m_Output << rValue << (bNewLine ? std::endl : ""); };
};
Oder so ähnlich
Es ist nicht getestet und ich weiss nicht mehr, ob es lock_guard oder locked_guard hiess bei boost.
Man könnte auch noch die thread-id automatisch mit angeben, Uhrzeit und anderes, vieles möglich. Meistens reichen aber schon nur ein paar strings
Grüssli