Hi!
Hier mal meine UDF für softwareseitiges Multithreading in AutoIt.
Für die die nicht wissen was das ist, hier mal Alinas Erklärung:
Multithreading
Meist ist mit dem Begriff das softwareseitige Multithreading gemeint, bei dem in aller Regel nur ein Prozessor beteiligt ist. Die dann vorhandene scheinbare Gleichzeitigkeit wird in Wirklichkeit durch geschickte Programmierung erzeugt. Einzelne Threads eines Prozesses/Tasks können sehr schnell auf zeitkritische Ereignisse reagieren, während andere Threads langwierige Berechnungen durchführen.
Das ganze Ding heißt InfiniteCore, und funktioniert folgerndermaßen:
Man hat z.B. ein großen Skript. Darin wird etwas berechnet. Diese Berechnung ist aber groß und blockiert den Programmfluss. Das heißt es wäre besser würde sie simultan zum Mainskript ausgeführt werden.
Also lagert man die Funktion in einen "Core" aus. Ist die Berechnung wichtig, kann man die Priorität des Cores gegenüber anderen verstellen.
Alle Cores benutzen einen Value Pool zur Kommunikation mit dem Mainskript und untereinander. So können hochkarätige Cores verknüpft werden und Informationen ohne Zeitverlust austauschen. Egal zu welchen Zeitpunkt kann auch das Mainskript im Value Pool rumfingern, denn Values sind nicht Core spezifisch.
Jeder Core lässt sich natürlich einzeln wieder beenden. So kann das Mainskript den ganzen ihm zugewiesnen Speicher nutzen + die Speicher der Cores.
Alles das wird auch im Example verdeutlicht, welches natürlich nicht das gesamte Nuzungspektrum zeigt.
Alles nötige im Anhang. Viel Spaß beim Corchen
MfG, campweb