using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication3
{
class Program
{
static long Sum=0;
static object mylock;
static void Main(string[] args)
{
long n = 0;
long s1 = DateTime.Now.Ticks;
for (int i = 0; i <= 100; i++)
{
n += i;
Thread.Sleep(10);
}
long s2 = DateTime.Now.Ticks;
Console.Write("----------------单线程运行-------------------\nsum:" + n + "\n\r所花时间(纳秒):" + (s2 - s1)+"\n");
Console.Write("----------------双线程运行-------------------\n");
Thread t1 = new Thread(add1);
Thread t2 = new Thread(add2);
mylock = new object();
s1 = DateTime.Now.Ticks;
t1.Start();
t2.Start();
t1.Join();
t2.Join();
s2 = DateTime.Now.Ticks;
Console.Write("sum:" + n + "\n\r所花时间(纳秒):" + (s2 - s1));
Console.ReadKey();
}
static void add1()
{
long n = 0;
for (int i = 0; i <= 50; i++)
{
n += i;
Thread.Sleep(10);
}
Monitor.Enter(mylock);
Sum += n;
Console.Write("线程一运行完毕,Sum:" + Sum+"\n");
Monitor.Exit(mylock);
}
static void add2()
{
long n = 0;
for (int i = 51; i <= 100; i++)
{
n += i;
Thread.Sleep(10);
}
Monitor.Enter(mylock);
Sum += n;
Console.Write("线程二运行完毕,Sum:" + Sum + "\n");
Monitor.Exit(mylock);
}
}
}
C# 多线程协同完成一个任
最新推荐文章于 2024-05-11 15:39:42 发布