本文整理汇总了C#中Port.Post方法的典型用法代码示例。如果您正苦于以下问题:C# Port.Post方法的具体用法?C# Port.Post怎么用?C# Port.Post使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Port
的用法示例。
在下文中一共展示了Port.Post方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Clear
public void Clear()
{
var p = new Port<int> ();
p.Post (10);
p.Post (10);
Assert.AreEqual (2, p.ItemCount, "#1");
p.Clear ();
Assert.AreEqual (0, p.ItemCount, "#2");
p.Clear ();
Assert.AreEqual (0, p.ItemCount, "#3");
}
示例2: Mul
static void Mul(InputData data, Port<int> resp)
{
int i, j;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
sWatch.Start();
for (i = data.start; i <= data.stop-1; i++)
{
for (j = i+1; j <= data.stop; j++)
{
if (a[j] < a[i]) //сортировка пузырьком
{
var temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
//внимательно присмотревшись к этой функции и к условиям, в которых она вызывается, можно сделать вывод
//что она вернет массив, состоящий из двух сортированных половинок, но не сортированный целиком
//так оно и есть, потому что параллельный пузырек - необычная задумка
//в данной лабораторной работе эта проблема решается в делегате, описанном в приемнике, штатными средствами C#
sWatch.Stop();
resp.Post(1);
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例3: Mul
static void Mul(InputData data, Port<int> resp)
{
long Result = 0;
int i = 0;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
Random r = new Random();
for (int j = 0; j < n; j++)
{
a[j] = r.Next(1, 3);
b[j] = r.Next(1, 3);
}
long ResultA = 1;
long ResultB = 1;
long Res = 0;
sWatch.Start();
for (i = data.start; i <= data.stop; i++)
{
ResultA = ResultA * a[i];
ResultB = ResultB * b[i];
ResultA = ResultA / 25;
ResultArr[i] = ResultA + ResultB;
Res = Res + ResultArr[i];
}
sWatch.Stop();
resp.Post(1);
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例4: Mul
static void Mul(InputData data, Port<int> resp)
{
int i;
double Pi = 0,dx=0,x=0;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
sWatch.Start();
dx = 1 / 10000000.0;
x = data.start / 10000000.0;
for (i = data.start; i <= data.stop; i++)
{
Pi += Math.Sqrt(1 - x * x)*4*dx;
x += dx;
}
Console.WriteLine("часть Pi №{0} = {1}", Thread.CurrentThread.ManagedThreadId,Pi);
sWatch.Stop();
resp.Post(1);
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例5: Run
private static void Run(int n, int threadCount)
{
Dispatcher d = new Dispatcher(threadCount, "ccr pool");
DispatcherQueue dq = new DispatcherQueue("disp", d);
Port<int> p1 = new Port<int>(), p2 = new Port<int>();
EventWaitHandle done1 = new AutoResetEvent(false), done2 = new AutoResetEvent(false);
PingPonger pp1 = new PingPonger(done1, n, p2),
pp2 = new PingPonger(done2, n, p1);
Arbiter.Activate(dq, Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(Arbiter.Receive(true, p1, pp1.Update)),
new ConcurrentReceiverGroup()));
Arbiter.Activate(dq, Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(Arbiter.Receive(true, p2, pp2.Update)),
new ConcurrentReceiverGroup()));
p1.Post(0);
EventWaitHandle.WaitAll(new[] { done1, done2 });
dq.Dispose();
d.Dispose();
}
示例6: Mul
static void Mul(InputData data, Port<int> resp)
{
int Result = 0;
int i = 0;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
Random r = new Random();
for (int j = 0; j < n; j++)
a[j] = r.Next(5);
sWatch.Start();
for (i = data.start; i <= data.stop; i++)
{
Result = Result + a[i];
}
resp.Post(1);
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
sWatch.Stop();
Console.WriteLine("Сумма:");
Console.WriteLine(Result);
}
示例7: thread_fun
//Функция-нить исполнения
//Принимает в виде аргумента контейнер с заданием,
//сортирует часть массива
//Посылает сообщение в порт
static void thread_fun(InputData d, Port<int> resp)
{
Stopwatch sWatch = new Stopwatch();
sWatch.Start();
qsort(d.array, d.start, d.stop);
sWatch.Stop();
Console.WriteLine(d.str+"Время работы: "+ sWatch.ElapsedMilliseconds);
resp.Post(1);
}
示例8: task
static void task(InputData d, Port<int> resp)
{
d.result = PerformIntegral(d.start, d.stop, d.n);
Console.WriteLine(d.str);
Console.WriteLine("Начало: "+d.start+" конец: "+d.stop);
Console.WriteLine("Результат на текущем шаге: " + d.result);
mRes = mRes + d.result; //формируем общий результат
resp.Post(1);
}
示例9: CleanedUpReceiverReturnsTask
public void CleanedUpReceiverReturnsTask()
{
var p = new Port<int> ();
IPortReceive ipr = p;
VoidDispatcherQueue dq = new VoidDispatcherQueue ();
ReceiverTask rt = new EvalTask (true, new NullTask ());
rt.State = ReceiverTaskState.CleanedUp;
rt.TaskQueue = dq;
ipr.RegisterReceiver (rt);
Assert.AreEqual (1, ipr.GetReceivers ().Length, "#1");
p.Post (10);
Assert.AreEqual (1, dq.queuedTasks, "#2");
Assert.AreEqual (0, ipr.GetReceivers ().Length, "#3");
}
示例10: Mul
static void Mul(InputData data, Port<int> resp)
{
int min2 = A[0], max2 = A[0], i;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
sWatch.Start(); // запуск секундомера
for (i = data.start; i <= data.stop; i++)
{
if (A[i] < min2)
min2 = A[i];
if (A[i] > max2)
max2 = A[i];
}
sWatch.Stop(); // отключение секундомера
resp.Post(1);
Console.WriteLine(min2);
Console.WriteLine(max2);
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例11: ReceiveWithElementOnThePort
public void ReceiveWithElementOnThePort()
{
Port<int> port = new Port<int> ();
IPortReceive portRec = port;
port.Post (10);
var receiver = port.Receive ();
var dq = new VoidDispatcherQueue ();
receiver.TaskQueue = dq;
Assert.IsNull (receiver.Arbiter, "#1");
Assert.AreEqual (ReceiverTaskState.Onetime, receiver.State, "#2");
Assert.IsNull (receiver.Execute (), "#3");
Assert.AreEqual (ReceiverTaskState.Onetime, receiver.State, "#4");
IPortReceive rec = port;
Assert.AreEqual (1, rec.GetReceivers ().Length, "#5");
}
示例12: ParSearch
static void ParSearch(Data data, Port<int> p)
{
int min2 = arr[0], max2 = arr[0];
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
sWatch.Start();
for (int i = data.start; i <= data.stop; i++)
{
if (arr[i] < min2)
min2 = arr[i];
if (arr[i] > max2)
max2 = arr[i];
}
sWatch.Stop();
p.Post(1);
Console.WriteLine(min2);
Console.WriteLine(max2);
Console.WriteLine("P {0}: Time of ParSearch {1} ms.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例13: Mul
static void Mul(InputData data, Port<int> resp)
{
int i, j;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
sWatch.Start();
for (i = data.start; i <= data.stop; i++)
{
for (j = i; i <= data.stop; i++)
{
if (a[j] > a[j+1]) {
int b = a[j]; //change for elements
a[j] = a[j+1];
a[j+1] = b;
}
}
}
sWatch.Stop();
resp.Post(1);
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例14: Mul
static void Mul(InputData data, Port<int> resp)
{
int i, j;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();
sWatch.Start();
for (i = data.nachalo; i <= data.konec; i++)
{
for (j = i; i <= data.konec; i++)
{
if (a[j] > a[j+1]) {
int b = a[j]; //Обмен элементами
a[j] = a[j+1];
a[j+1] = b;
}
}
}
sWatch.Stop();
resp.Post(1);
Console.WriteLine("Поток # {0}: Параллельный алгоритм = {1} миллисекунд", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
}
示例15: Sum
static void Sum(InputData data, Port<int> resp) //параллельный алгоритм
{
int Result = 0;
int i = 0;
System.Diagnostics.Stopwatch sWatch = new System.Diagnostics.Stopwatch();//для отсчитывания времени
Random r = new Random();
for (int j = 0; j < n; j++)
Arr[j] = r.Next(5);
sWatch.Start();
for (i = data.start; i <= data.stop; i++)
{
Result = Result + Arr[i]; //сумма массива
}
resp.Post(1);//результат отпраляется на порт
Console.WriteLine("Поток № {0}: Параллельный алгоритм = {1} мс.", Thread.CurrentThread.ManagedThreadId, sWatch.ElapsedMilliseconds.ToString());
sWatch.Stop();
Console.WriteLine("Сумма:");
Console.WriteLine(Result);
}