2017-12-17 3 views
-2

Ich arbeite mit Windows 10 mit Codeblocks und gcc 7.2 und ich kann C++ 11 oder C++ 14 verwenden. Wenn möglich ohne externe Bibliotheken (Boost). Ich habe ein Programm, das Hunderte von Millionen Feldern bearbeitet. Es ist ein Konzeptbeweis, also brauche ich keine komplizierte Fehlerbehandlung. Ich brauche Einfachheit und Leistung. Die Felder sind einem Puffer aus Bits zugeordnet, der mehr als 500 MB erreichen kann, und ich möchte die Verwaltung des Puffers in einen isolierten Thread einfügen. Der Konstruktor oder die Initialisierung würde die Erstellung eines Vektors vornehmen, die Destruktor- oder Endfunktion würde den Puffer mit Statistik auf die Platte schreiben, und die Funktion, die millionenfach aufgerufen wird, macht nur einen Kalkül und setzt die Bits. Ich muss diese Funktion asynchron vom Hauptprogramm aufrufen und brauche keine Daten zurückzugeben. Nur um die Bits zu setzen und wenn es Fehler gibt, kann ich lesen, als wenn die Verarbeitung endet, wenn es sonst kompliziert ist. Das Hauptprogramm kann in 2 oder 4 Threads repliziert werden, die auf die gleiche Funktion zugreifen. Ich schätze Anleitung für den asynchronen Aufruf dieser Funktion. Vielen Dank.Asynchrone Thread

+0

Well C++ 11 und später unterstützt [std :: thread] (http://en.cppreference.com/w/cpp/thread/thread) –

+0

habe ich es und es funktioniert ok. Wie kann ich asynchron in einer Art und Weise anrufen, die den Thread verwendet, den ich ohne Futures will, weil ich das Hauptprogramm nicht blockieren will und keine Antwort zurück zum Haupt habe? –

+0

Sie können sich auf diese Antwort beziehen: https://stackoverflow.com/questions/10890242/get-the-status-of-a-stdfuture – Frank

Antwort

-1

Entschuldigung für mein Englisch. Die Frage besteht darin, millionenfach mit einem Thread zu kommunizieren, ohne das Hauptprogramm zu blockieren und ohne CPU zu verbrauchen, wenn der Thread keine Arbeit zu erledigen hat. Und mit guter Leistung, weil der Programmcode sehr kurz ist, aber oft ausgeführt wird.

Verwandte Themen