Buffer同步 ,并行读取流文件
2015-06-02 23:01
225 查看
vs2012安装NuGet, 查找Microsoft TPL Dataflow安装.
引入命名空间using System.Threading.Tasks.Dataflow;
使用这个工具包,可以实现并行读取流文件。
class Program
{
static BufferBlock<string> buffer=new BufferBlock<string>();//声明一个缓冲块.
static void Main()
{
var T1 = Task.Run(() => producer());
var T2 = Task.Run(() => receiver());
Task.WaitAll(T1, T2);
}
/// <summary>
/// 数据供应者
/// </summary>
static void producer()
{
bool exit = false;
while (!exit)
{
string line = Console.ReadLine();
if (string.Compare(line, "exit", ignoreCase:true) == 0)//注意这里是:号
{
exit = true;
}
else
{
Console.WriteLine("当前线程是:{0},写入的值是:{1}", Task.CurrentId, line);
buffer.Post(line);
}
}
}
/// <summary>
/// 接收者
/// </summary>
static async void receiver()//注意这里的async关键字
{
while (true)//注意这里的while,是让线程持续运行
{
string r = await buffer.ReceiveAsync();
Console.WriteLine("当前线程是:{0},获取的值是:{1}", Task.CurrentId, r);
}
}
}
引入命名空间using System.Threading.Tasks.Dataflow;
使用这个工具包,可以实现并行读取流文件。
class Program
{
static BufferBlock<string> buffer=new BufferBlock<string>();//声明一个缓冲块.
static void Main()
{
var T1 = Task.Run(() => producer());
var T2 = Task.Run(() => receiver());
Task.WaitAll(T1, T2);
}
/// <summary>
/// 数据供应者
/// </summary>
static void producer()
{
bool exit = false;
while (!exit)
{
string line = Console.ReadLine();
if (string.Compare(line, "exit", ignoreCase:true) == 0)//注意这里是:号
{
exit = true;
}
else
{
Console.WriteLine("当前线程是:{0},写入的值是:{1}", Task.CurrentId, line);
buffer.Post(line);
}
}
}
/// <summary>
/// 接收者
/// </summary>
static async void receiver()//注意这里的async关键字
{
while (true)//注意这里的while,是让线程持续运行
{
string r = await buffer.ReceiveAsync();
Console.WriteLine("当前线程是:{0},获取的值是:{1}", Task.CurrentId, r);
}
}
}
相关文章推荐
- jQuery 删除元素
- 字符串的处理和算法分析
- jQuery 添加元素
- jQuery 设置内容和属性
- CSS固定顶底之二(肯定有效)
- HTMl5的sessionStorage和localStorage
- 设置webstorm的file watch 监视scss文件
- bootstrap结合thinkphp编辑网站
- jQuery事件绑定—on()、bind()与delegate()
- DeltasFeatureExtractor API 及特征提取
- 【从0到1学Web前端】CSS伪类和伪元素
- Java使用Protocol Buffers入门四步骤
- 【从0到1学Web前端】CSS伪类和伪元素
- 【从0到1学Web前端】CSS伪类和伪元素 分类: HTML+CSS 2015-06-02 22:29 1065人阅读 评论(0) 收藏
- JavaScript内存优化
- Javascript中Array.prototype.map()详解
- checkbox 设定文字和选框之间的距离及自定义样式
- JavaScript基础概念
- 通过浏览器渲染过程进行前端优化
- extjs mvc 整合kindeditor