Re: Threads
- From: Peter Brightman <peter@xxxxxxxxxxxx>
- Date: Tue, 16 Dec 2008 00:54:23 +0100
Peter Brightman schrieb:
l.juenemann@xxxxxxxxxxxxxx schrieb:Hallo,
ich mache meinen ersten Schritte mit Threads und habe gerade versucht,
einen Thread zu Beenden unter Anwendung der Kennzeichnung eines
kritischen Bereichs. Mein Thread kommt jedoch erst garnicht soweit.
Noch bevor er überhaupt den Thread ausführt, wird er auch schon
abgebrochen. Ich habe dann zwischen Start() und Abort() Thread.Sleep
(100) eingefügt, die Schleife wird jedoch nicht vollständig
abgearbeitet.
Habe ich dass mit den kritischen Regionen falsch verstanden? Ich hatte
gedacht, dass vor Abbruch diese Region auf alle Fälle ausgeführt wird.
Hier mal mein Versuch:
static void Main(string[] args)
{
ThreadStart operation = new ThreadStart(SimpleWork);
// Erstellt einen neuen Thread
Thread theThread = new Thread(operation);
// Beginnt die Durchführung der Arbeit in einem neuen
Thread
theThread.Start();
Thread.Sleep(10);
theThread.Abort();
Console.ReadKey();
}
static void SimpleWork()
{
Thread.BeginCriticalRegion();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Thread: {0}",
Thread.CurrentThread.ManagedThreadId);
// Thread schlafgen legen, sodass andere Threads zum
Zug kommen
Thread.Sleep(10);
}
Thread.EndCriticalRegion();
}
mfg
Lothar
Hallo Lothar,
normalerweise wird eine critical section betreten um eine synkope bzw. variable zu beschreiben so daß der Schreibvorgang komplett abgeschlossen wird und ein threadwechsel innerhalb der critical section verhindert wird. Deshalb sollte die critical section so schnell es geht wieder verlassen werden, somit ist ein sleep() innerhalb einer critical section natürlich tödlich.
Gruß,
Peter
....meinte natürlich semaphore, nicht synkope sorry, war nebenbei am sequencer...
.
- References:
- Threads
- From: l.juenemann@xxxxxxxxxxxxxx
- Re: Threads
- From: Peter Brightman
- Threads
- Prev by Date: Re: Threads
- Next by Date: Re: Toolbox-Frage
- Previous by thread: Re: Threads
- Next by thread: Re: Threads
- Index(es):
Relevant Pages
|