"ParralelTaskApllication":
(рис 23.1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ParralelTaskApllication
{
class XClass
{
public void MA(object param) { MB(param); }
public void MB(object param) { MC(param); }
object s1 = new object();
object s2 = new object();
public void MC(object param)
{
if (param == "1")
{
MD();
}
if (param == "2")
{
ME();
}
if (param == "3")
{
MF();
}
}
public void MD()
{
ME();
}
public void ME()
{
while (true) Thread.SpinWait(int.MaxValue / 20);
}
public void MF()
{
ML();
}
public void MG(object param)
{
MH(param);
}
public void MH(object param)
{
MI(param);
}
public void MI(object param)
{
if (param == "4")
{
MJ();
}
else
{
MK();
}
}
public void MJ()
{
Monitor.Enter(s1); Thread.SpinWait(int.MaxValue / 20); Monitor.Enter(s2);
}
public void MK()
{
Monitor.Enter(s2);
Thread.SpinWait(int.MaxValue / 10);
Monitor.Enter(s1);
}
public void ML()
{
MM();
}
public void MM()
{
while (true)
{ Thread.SpinWait(int.MaxValue / 3);
Debugger.Break();
};
}
}
class Program
{
static XClass obj = null;
static void Main(string[] args)
{
obj = new XClass();
Task.Factory.StartNew(obj.MA, "1");
Task.Factory.StartNew(obj.MA, "2");
Task.Factory.StartNew(obj.MA, "3");
Task.Factory.StartNew(obj.MG, "4");
Task.Factory.StartNew(obj.MG, "5");
Console.ReadLine();
}
}
}
"Start Debbuging" из меню Visual Studio - "Debug" или с помощью клавиши "F5":
(рис 23.2)
Debbuger.Break():
(рис 23.3)
Parallel Task) из меню "Debug -> Windows" или с помощью сочетания клавиш "Ctrl+Shift+D,K":
(рис 23.4)
(рис 23.5)
В данном окне, по каждой запущенной задачи можно увидеть: уникальный идентификатор задачи, имя потока, который запускает задача, ее расположение.
"Freeze Assigned Thread":
(рис 23.6)
Напротив потока должен отобразиться соответствующий значок:
(рис 23.7)
Если поток "замораживается", то он не будет выполняться при проходе по коду после текущей точки останова.
"Switch To Task". При этом программа перейдет на участок кода соответствующий данному потоку. В нашем случае метод с ID = 2 соответствует методу public void ME():
(рис 23.8)
"Debug" - "Stop Debugging" или сочетание клавиш "Shift+F5":
(рис 23.9)
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.