Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Синхронізація процесів і потоків

Реферат Синхронізація процесів і потоків





aph ()

{= new List lt; Node gt; ();=new List lt; Node gt; (); (); all=new List lt; string gt; (); (int i=0; i lt; dataGridView1.RowCount; i ++)

{.Add((string)dataGridView1.Rows[i].Cells[1].Value);.AddRange(((string)dataGridView1.Rows[i].Cells[2].Value).Split(laquo;,raquo;));

} n=all.Distinct (). Count (x= gt; x!= 0 ) + dataGridView1.RowCount - 1; (int i=0; i lt; n; i ++ )

{();

} (int i=0; i lt; dataGridView1.RowCount; i ++)

{prev=int.Parse ((string) dataGridView1.Rows [i] .Cells [1] .Value); next=int.Parse ((string) dataGridView1.Rows [i] .Cells [2] .Value); edge=AddEdge (prev, next); (prev == 0)

{

var node=edge.Prev;

L.Add (node);

}

} (L.Any ())=L.First ();

} CheckLoop (Node node)

{

//3. Для заданого вузла дивимося, чи виходить з нього хоча б одне немаркованих ребро.

var unmarked=node.Edges.Where (x= gt; x.Mark == false);

if (unmarked.Any ())

{

//Якщо так, вибираємо нове немаркованих виходить ребро і маркіруємо його.

//І переходимо по ньому до новому вузлу і повертаємося до кроку 3.

var edge=unmarked.First () ;. Mark=true; (L.Contains (edge.Next)) return true;

{

L.Add (edge.Next);

return CheckLoop (edge.Next);

}

}

//Eсли немає - зайшли в безвихідь.

//Повертаємося до кроку 3.

{

//Видаляємо останній вузол зі списку і повертаємося до попереднього вузлу.

var last=L.Last () ;. Remove (last);

last=L.Last ();

//Якщо це початковий вузол, значить циклів немає, і алгоритм завершується.

if (last == first)

return false; CheckLoop (last);

} false;

} Node first; List lt; Node gt; L=new List lt; Node gt; (); int count; AddNode ()

{++; node=new Node () ;. Id=count; .Add (node);

} AddEdge (int prev, int next)

{edge=new Edge () ;. Mark=false; .Prev=Nodes [prev] ;. Next=Nodes [next]; [prev] .Edges.Add (edge); edge;

} void btnDeadlock_Click (object sender, EventArgs e)

{

{();

} (Exception)

{. AppendText ( Некоректно введені дані n ) ;;

} (L.Any () == false)

{. AppendText ( Некоректно введені дані n ) ;;;

} last=L.Last (); (CheckLoop (last))

{. AppendText ( Є блокування n );

}

{. AppendText ( Блокування не виявлені n );

}

} void button1_Click (object sender, EventArgs e)

{. Rows.Clear (); (int i=0; i lt; numericUpDown1.Value; i ++)

{. Rows.Add () ;. Rows [i] .Cells [0] .Value=i + 1;

}

}

}

}


Додаток 2.

System.Collections.Generic;System.Windows;GalaSoft.MvvmLight;GalaSoft.MvvmLight.Command;DeadlockPreventing.ViewModel

{

/// lt; summary gt;

/// This class contains properties that the main View can data bind to.

/// lt; para gt;

/// Use the lt; strong gt; mvvminpc lt;/strong gt; snippet to add bindable properties to this ViewModel.

/// lt;/para gt;

/// lt; para gt;

/// You can also use Blend to data bind with the tool's support.

/// lt;/para gt;

/// lt; para gt;

/// See # justify gt; /// lt;/para gt;

/// lt;/summary gt; class MainViewModel: ViewModelBase

{

/// lt; summary gt;

/// Initializes a new instance of the MainViewModel class.

/// lt;/summary gt; MainViewModel ()

{= 3; еResources=3;

} int _processCount; int Proc...


Назад | сторінка 9 з 10 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка Web-додатки з використанням JavaScript каркаса Node.js
  • Реферат на тему: Програмне забезпечення Solid Edge
  • Реферат на тему: This is a list of problems facing society today
  • Реферат на тему: Return to materialism
  • Реферат на тему: The Marx's class