2012-04-01 1 views
4

Im Visual Studio zum Beispiel kann man jeden Thread zu jeder Zeit einfrieren/auftauen. Ist es möglich, dies programmatisch zu tun, um einen Stresstest für Threaded-Code zu erstellen? Wenn ein Thread zufällig für einen zufälligen Zeitraum eingefroren werden könnte, würde er die Synchronisationslogik wirklich ausüben.Ist es programmgesteuert möglich, Threads unter Windows zu fixieren?

Antwort

3

Sie können dies mit SuspendThread & ResumeThread tun, benötigen Sie die Thread-Handle, die Sie erhalten, indem Sie OpenThread aufrufen. Die thread functions Seite auf msdn ist eine gute Ressource für diese Art von Sache.

1

Sie können eine Thread erstellen, die zufällig Thread's von ThreadPool wählt und sie für eine zufällige Zeitspanne in den Ruhezustand versetzen. Wenn Sie danach suchen.

+1

selbst wenn sie nur suspendiert werden und 'sofort' wieder aufgenommen werden, würde dies wahrscheinlich nichtdeterministische Verzögerungen liefern. – JustJeff

+0

@JustJeff sehr wahr – Mayank

+0

Nicht alle Threads sind Teil eines Thread-Pools. Und Sie führen keine Verzögerungen bei Aufgaben ein (um auf Rennbedingungen zu testen), Sie verbrauchen nur den Thread-Pool. -1 –