mehrere kerne nutzen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    mehrere kerne nutzen

    Ich wollte mal wissen ob es eine möglichkeit gibt ein programm mit mehreren kernen laufen zu lassen, damits eben schneller geht
    Ich hab da nämlich folgendes Programm geschrieben um Primzahlen zu errechnen:

    Quellcode

    1. Dim weiter As Boolean = True
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGo.Click
    3. lblStat.Text = "arbeitet"
    4. lsbPrim.Items.Clear()
    5. lsbPrim.Items.Add(2)
    6. Dim i As Integer = 3
    7. Dim d As Double = 0
    8. Dim w As Boolean = True
    9. weiter = True
    10. While weiter
    11. w = True
    12. For x = 0 To lsbPrim.Items.Count - 1
    13. d = i / lsbPrim.Items.Item(x)
    14. If d = Math.Floor(d) Then w = False : Exit For
    15. Next
    16. If w Then lsbPrim.Items.Add(i)
    17. i += 2
    18. My.Application.DoEvents()
    19. End While
    20. lblStat.Text = "fertig"
    21. End Sub


    Das Programm arbeitet bei meinem Quad aber nur mit 25% sprich einen kern....
    Ist es nicht so, das jedes Programm ersteinmal mit 2 Kernen startet?
    Wenn ich mir die Prozesse im Taskmanager so ansehe, ist das so, dass jeder Prozess auf beiden Kernen läuft.
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Wenn die Anwendung mehr als einen Thread hat, wird sie im Zweifel auch auf mehr als einer CPU ausgeführt (vereinfacht). Gibt's nur einen Thread, "springt" der einfach nur zwischen den Kernen hin und her. Jeden Thread einen dedizierten Kern zuzuweisen ist mW nicht so einfach möglich und auch nicht wünschenswert. Das BS soll ja selbst für eine möglichst gleichmäßige Auslastung sorgen.
    sieht vielversprechend aus, aber da steht:
    Legt die Prozessoren fest, auf denen der zugeordnete Thread ausgeführt werden kann.
    heißt ja eig soviel wie, zwischen welcher cpus der thread hin und herspringen kann, also nix anderes als voher, denn die sin ja standartmäßig ja eh alle vier ( siehe taskman ->prozesse -> kontextmenü -> set affinity (bei mir auf englisch))

    aber wie du schon gesagt hast, müsst ich halt irgendwie schreiben, dass ich 4 threads hab, die dann entsprechend miteinander arbeiten...
    na dann, soweit schon mal danke für