Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Schleifenabbruch durch Esc Taste...

  Alt 7. Nov 2014, 13:12
Eigendlich sollte kein Thread in der Lage sein, irgendeinen anderen durch eine Schleife zu "blockieren" (abgesehen von welchen mit niedriger Priorität). Dafür sorgt das Betriebssystem.
Soweit ich mich erinnere, muss der Thread schon selber Bescheid geben, wenn er unterbrochen werden könnte, meist durch API-Aufrufe. Eine Endlosschleife ohne Sleep wird nie Bescheid geben, das jemand Anderes auch mal ran darf, zumindest ein Kern ist dann ausgelastet. Hier sollte jedoch ein Sleep(0) auch reichen. Immerhin könnte es ein, das Sleep(1) 18ms lang wartet, weiß ich jetzt aber nicht mehr so genau.
Jeder Thread bekommt vom System ein "Fenster" von paar Millisekunden, in dem es einen Kern nutzen kann, bevor Windows den Kern für den nächsten Thread freimacht....Bei einer 1-Kern-CPU kann man mit einem Thread ja problemlos alles lahmlegen. -> genausoviel/mehr Aufgaben (ala arbeitende Threads), als Arbeiter (Kerne)
Wie passt das zusammen? Also entweder habe ich einen Scheduler, der per Interrupt den Thread unterbricht, dann kann ein Thread nix lahmlegen, oder ich habe einen Scheduler, der nur Prozesse unterbricht, aber keine Threads. Dann kann der Thread den Prozess lahmlegen.

Soweit ich weiß, unterbricht Windows die Threads nicht selbst, sondern nur die Prozesse...
  Mit Zitat antworten Zitat