Autor Beitrag
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: Fr 05.09.08 16:52 
Servus!

Wie der Titel schon sagt, habe ich ein Problem mit Timern (und auch Schleifen) bei einem Multicore-PC. Der Timer feuert plötzlich nur noch alle 100ms (auch im Echtzeit-Modus) wobei die Prozessorauslastung bei 10% liegt. Auf einem alten Dell läuft das Program einwandfrei, das Tick-Ereignis wird rund alle 10ms ausgeführt. Auch die While-Do-Anweisung funktioniert aus irgendeinem Grund nicht und feuert auch nur alle 100 ms. Ich habe es auf zwei neueren Dual- bzw. Quadcore-Rechnern getestet und auf zwei älteren Pentium M; beim M läufts, MultiCore nicht. Kennt jemand das Problem und weiß zu helfen? Das wäre echt wunderbar...

lg norman
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Fr 05.09.08 17:29 
Hi,
ich weiß, dass das jetzt nicht direkt weiterhilft. Aber trotzdem möchte ich erwähnen, dass Windows kein Echtzeitbetriebssystem ist. Timerintervalle ab etwa 50ms sollten sich wohl relativregelmäßig generieren lassen, aber der Wert von 10ms liegt schon, egal bei welchem Windows, unter dem Wert, der als minimaler Durchschnitt des einzelnen TTimers (bzw. Api-Pendant) genannt wird.
Wenn die 10ms kritisch sind, dann solltest du eh überlegen, andere Methoden zu verwenden.

Gibt es auf den Rechnern andere Unterschiede, als die Kernzahl? Welche Frequenzen, welches Windows, wie viele Anwendungen nebenher?

Gruß
alias5000

_________________
Programmers never die, they just GOSUB without RETURN
norman2306 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: Fr 05.09.08 17:43 
Die Zahl ist nicht kritisch. 65ms ist die kritische Zahl. Ich konnte das Problem inzwischen eingrenzen:

Der Timer generiert ein JavaScript, welches an einen AxWebBrowser per ExecScript gesendet wird. Aus irgendeinem Grund warten die (neuen) Rechner bis das Script komplett ausgeführt wurde (Taktung etwas über 100 ms). Die alten machen einfach unabhängig davon weiter (Taktung etwa 12 ms). Sobald ich ExecScript rausnehme oder nur eine kleine Variable übergebe läuft das Program auf allen Rechnern gleich schnell... naja, ich habe versucht, die Übergabe an den AxBrowser in einen eigenen Thread zu schreiben... Leider ohne Erfolg. Hat vielleicht jemand eine Idee?

Angaben zum Betriebssystem:

Alle samt das Firmen-Einheits XP bei selber Konfigurierung und Software

Unterschiede bestehen ausschließlich in der Hardware und den Treibern.