Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sinhronizacija niti

[es] :: .NET :: Sinhronizacija niti

[ Pregleda: 3078 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sotsprodigy
Boban Todorovic
NIs

Član broj: 136722
Poruke: 18
*.internet.krstarica.net.



Profil

icon Sinhronizacija niti25.05.2007. u 14:09 - pre 205 meseci
Ima problem oko sinhronizacije niti pomocu monotora.Monitor mi zauzme promenljivu (objekat) ali nece da je oslobodi.
Evo koda pa ako neko zna gde gresim ....

private void nit1()
{
Control.CheckForIllegalCrossThreadCalls = false;
for (; ; )
{
this.proces1.SetSelected(1, true); // neksriticna sekcija
Thread.Sleep(trackBar1.Value);

this.proces1.SetSelected(2, true); // zakljucaj promenljivu
Thread.Sleep(trackBar1.Value);

if (Monitor.TryEnter(deljiva))
{

Monitor.Enter(deljiva);
this.proces1.SetSelected(3, true); // {
Thread.Sleep(trackBar1.Value);
deljiva.Enqueue(15);
this.proces1.SetSelected(4, true);
Thread.Sleep(trackBar1.Value);
this.proces1.SetSelected(5, true); // }
Thread.Sleep(trackBar1.Value);
this.proces1.SetSelected(6, true); //otkljucaj promenljivu
Monitor.Exit(deljiva);
Monitor.Pulse(deljiva);
Thread.Sleep(trackBar1.Value);
}
else
{
while (!Monitor.TryEnter(deljiva)) { };
Monitor.Enter(deljiva);
this.proces1.SetSelected(3, true); // {
Thread.Sleep(trackBar1.Value);
deljiva.Enqueue(15);
this.proces1.SetSelected(4, true);
Thread.Sleep(trackBar1.Value);
this.proces1.SetSelected(5, true); // }
Thread.Sleep(trackBar1.Value);
this.proces1.SetSelected(6, true); //otkljucaj promenljivu
Monitor.Exit(deljiva);
Monitor.Pulse(deljiva);
Thread.Sleep(trackBar1.Value);
}

this.proces1.SetSelected(7, true);
Thread.Sleep(trackBar1.Value);


}

boby
 
Odgovor na temu

[es] :: .NET :: Sinhronizacija niti

[ Pregleda: 3078 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.