Die Threads eignen sich hervorragend zum Verteilen von Arbeit und zum Vermeiden von etwas, das darauf wartet, dass etwas passiert, was nicht wirklich wichtig ist, wenn wir jetzt warten. Die Verwendung von Threads ist definitiv eine gute Idee für Ihr Design.
Wie viele Threads sollten Sie haben, und ob es "wert" ist, mehr oder weniger Threads zu haben? Das ist eine viel schwierigere Frage zu beantworten. Für CPU-intensive Threads ist es wirklich sinnlos, mehr als CPU-Kerne im System zu haben, da Sie nicht mehr mit weiteren Threads arbeiten müssen [es gibt immer noch Softwarearchitektur-Gründe, um mehr Threads zu haben, aber das ist normalerweise so weil die Software viel zu komplex wird und hoffentlich kommt man nicht hin ...]
Für Dinge, die warten, und daher nicht viel CPU verbrauchen, ist die Anzahl der Threads mehr von "was auch immer es macht im Code leicht zu handhaben "- Tausende zu haben ist offensichtlich eine schlechte Idee, aber ein oder zwei oder drei werden keinen großen Unterschied machen. Sie haben offensichtlich das gleiche Problem mit "Wie sage ich dem Thread, was als nächstes zu tun ist, und wann muss ich auf das Ergebnis warten ...", usw. Ein leerer Thread tut dem System nicht viel Leistung - es nimmt eine kleine Menge an Stapelspeicher und eine noch kleinere Menge an Thread-Steuerungsdaten auf, aber es ist so eine kleine Menge, dass es nicht wirklich wichtig ist, wenn Sie nicht viele davon haben.
Zusammenfassend, wahrscheinlich "viel schreien für sehr wenig Wolle", wie der blinde Mann sagte, als er das Schwein geschoren - mit anderen Worten, viel Arbeit, nicht viel Nutzen.
* "Ist das überhaupt eine lohnende Optimierung?" * - wahrscheinlich nicht. – Pubby
Std :: Thread ist im Standard. Denken Sie darüber nach, dies zu verwenden. –
Std :: Thread funktioniert nicht ordnungsgemäß auf Windows-Systemen. Es ist funktional das selbe wie boost :: thread sowieso, also wenn ich mal zum umschalten brauche ist das einfach. – jmegaffin