konstante CPU-Last erzeugen
-
Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen
-
gibt real time layer für windows. zeitkritische anwendungen für windows zu entwickeln ist zwar banane, aber billig ^^
-
dEUs schrieb:
Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen
Ok
Dann versuch ich mal auch was produktives beizutragen: krahm dein alle x ein sleep programm noch mal raus und mach ein
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
vorne ran.
-
thordk schrieb:
gibt real time layer für windows. zeitkritische anwendungen für windows zu entwickeln ist zwar banane, aber billig ^^
Ich weiß. Auch dafür hat niemand Zeit.
-
CMatt schrieb:
dEUs schrieb:
Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen
Ok
Dann versuch ich mal auch was produktives beizutragen: krahm dein alle x ein sleep programm noch mal raus und mach ein
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
vorne ran.Hilft auch nix...
-
dEUs schrieb:
CMatt schrieb:
dEUs schrieb:
Ich hab da keine Entscheidungsgewalt. Jeder weiß hier, dass das Quatsch ist das so zu machen. Niemand hat aber die Zeit, das ins Realtime zu ziehen
Ok
Dann versuch ich mal auch was produktives beizutragen: krahm dein alle x ein sleep programm noch mal raus und mach ein
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
SetProcessPriorityBoost(GetCurrentProcess(),TRUE);
vorne ran.Hilft auch nix...
Das du ein dual core system? (auf meinem single core reduzieren die 2 zeilen von oben as steurung nähmlich von ~20% auf 5)
-
Nein, ein single core.
Zeig mal den ganzen Code von dir.
-
int main() { SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL); SetProcessPriorityBoost(GetCurrentProcess(),TRUE); while(1) { for(int x=0;x<999999;x++); Sleep(1); } return 0; }
als debug compliert, damit der compiler das unnütze zeug nicht einfach raus-optimiert => erbit ne last von 20-25% bei mir
(wobei ich von der Last spreche die im task manager angezeigt ist, also durschnitt, in echt sind das nählich keine 20% CPU load sondern 999999 mal vollgas dann 1ms pause)
-
Ich schmeiß auch mal was in die Runde:
DMA bei der Platte ausschalten und Dateien hin und her kopieren, k.A. ob das evtl. ne halbwegs konstante CPU-Last erzeugt...
-
Folgendes scheint gut zu klappen, auch ohne riesige Mengen von Threads.
10 Threads: 3% CPU-Auslastung
50 Threads: 35% CPU-Auslastung
100 Threads: 80% CPU-Auslastung#include <windows.h> #include <iostream> #include <cmath> float x; DWORD WINAPI threadProc(void*) { while(true) { for(int i = 0; i < 1000; i++) { x += sinf(x); x *= sqrtf(fabsf(x)); x /= cosf(x) + 1.0f; x = powf(fabsf(x), 2.75f); } Sleep(1); } } int main() { for(int i = 0; i < 100; i++) { DWORD id; CreateThread(0, 16, threadProc, 0, STACK_SIZE_PARAM_IS_A_RESERVATION, &id); } std::cin.get(); return 0; }