C#Monitor模似 Barrier
来源:互联网 发布:seo黑帽很花钱吗 编辑:程序博客网 时间:2024/06/16 19:34
{
public delegate void callback(int number );
private readonly int thread_count;
private readonly callback call;
public int currentNumeric { get; set; }
private object oLock = new object();
private int count = 0;
public MyBarrier(int thread_count, callback call)
{
this.thread_count = thread_count;
this.call = call;
}
public void SignalAndWait()
{
lock (this.oLock)
{
this.count++;
if (this.count % this.thread_count == 0)
{
this.call((this.count / this.thread_count));
Monitor.PulseAll(this.oLock);
}
else
{
Monitor.Wait(this.oLock);
}
}
}
}
以下是Main函数:
class Program
{
static MyBarrier _barrier = new MyBarrier(3, delegate(int b)
{
Console.WriteLine("当前是第"+ b+"次碰面");
Thread.Sleep(TimeSpan.FromSeconds(2));
});
static void Main(string[] args)
{
new Thread(() => PlayMusic("sam", "程序员", 3)).Start();
new Thread(() => PlayMusic("jim", "程序员", 4)).Start();
new Thread(() => PlayMusic("tom", "程序员", 5)).Start();
Console.ReadKey();
}
static void PlayMusic(string name, string message, int seconds)
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine("----------------------------");
Console.WriteLine(name + " " + message);
Thread.Sleep(TimeSpan.FromSeconds(seconds));
Console.WriteLine(name + " " + message);
Thread.Sleep(TimeSpan.FromSeconds(seconds));
_barrier.SignalAndWait();
}
}
}
- C#Monitor模似 Barrier
- Barrier
- CF 16 C Monitor
- 16C.Monitor
- codeforces #16 div2 C.monitor
- OS Diary Day2 monitor.c
- monitor
- Monitor
- Monitor
- Monitor
- monitor
- Monitor
- codeforces 16C C. Monitor(二分)
- CodeForces 16C Monitor(gcd,水题)
- CodeForces 16C Monitor (简单题)
- Oracle 12c Cluster Health Monitor 详解
- C#Monitor类 Lock Mutex类详解
- CodeForces 16 C.Monitor(水~)
- 用python实现三分查找法
- 干前端的,拿到30K月薪真的很难吗?
- C/S,B/S模式的区别
- 随便写写
- MongoDB 连接池
- C#Monitor模似 Barrier
- win7/win8右键菜单添加程序
- echarts入门小案例
- AngularJS2 学习笔记——创建service
- 【Linux】几种进程间通信方式的清晰比较
- 1056: 背包2(填满型01背包)
- 欢迎使用CSDN-markdown编辑器
- SVN包含非法文件系统格式选项/包含非法文件系统格式选项
- C语言运算符优先级