首页 > 其他分享 >测试一个线程向集合添加数据,另一个线程读取数据

测试一个线程向集合添加数据,另一个线程读取数据

时间:2023-07-18 10:55:54浏览次数:48  
标签:Console 读取数据 bc Add 添加 线程 WriteLine name1 blockqueue

//Console.WriteLine("--------------------------------");
//Console.WriteLine("测试一个线程向集合添加数据,另一个线程读取数据,请输入人名,输入exit退出");
//BlockingCollection<string> names = new BlockingCollection<string>();
//Task.Run(() =>
//{
// while (true)
// {
// var name = names.Take();
// Console.WriteLine("你好," + name);
// }
//});
//var name1 = Console.ReadLine();
//while (name1 != "exit")
//{
// if (!string.IsNullOrEmpty(name1))
// {
// names.Add(name1);
// }
// name1 = Console.ReadLine();
//}

//Console.WriteLine("--------------------------------");
//Console.WriteLine("测试BlockingCollection 和 ConcurrentQueue");
//var queue = new ConcurrentQueue<string>();
//var blockqueue = new BlockingCollection<string>(queue, 100);
//Console.WriteLine("加入name1");
//blockqueue.Add("name1");
//Console.WriteLine("加入name2");
//blockqueue.Add("name2");
//Console.WriteLine("加入name3");
//blockqueue.Add("name3");
//Console.WriteLine(blockqueue.Take());
//Console.WriteLine(blockqueue.Take());
//Console.WriteLine(blockqueue.Take());

//Console.WriteLine("--------------------------------");
//Console.WriteLine("测试BlockingCollection 和 ConcurrentStack");
//var cq = new ConcurrentStack<string>();
//var bc = new BlockingCollection<string>(cq, 100);
//Console.WriteLine("加入name1");
//bc.Add("name1");
//Console.WriteLine("加入name2");
//bc.Add("name2");
//Console.WriteLine("加入name3");
//bc.Add("name3");
//Console.WriteLine(bc.Take());
//Console.WriteLine(bc.Take());
//Console.WriteLine(bc.Take());

标签:Console,读取数据,bc,Add,添加,线程,WriteLine,name1,blockqueue
From: https://www.cnblogs.com/wangtiantian/p/17562234.html

相关文章

  • mongodb一主一从添加一个从节点
    环境:OS:Centos7mongodb:4.4.22拓扑结构:192.168.1.107primary192.168.1.104secondary新增节点:192.168.1.108secondary 1.新增的节点安装mongodb目录结构保持与现有的一致,同时将密钥拷贝到新节点的相应目录下mongo.cnf配置文件可以拷贝主库的过来,然后修改相应的ip即可......
  • 十八、QThread线程
    1.进程线程关系介绍一个应用程序至少要有一个进程QProcess类可以开新的进程一个进程至少会有一个线程QThread2.使用方法(1)创建类实现QThread类或者QObject类(2)重写父类的run方法,在run方法中写入线程要做的事,只有run方法在线程中(3)创建对象,调用start方法,开启线程(4)termi......
  • ios 如何给约束添加动画
    项目方案:iOS如何给约束添加动画1.简介在iOS开发中,使用AutoLayout来布局界面是非常常见的做法。而有时候,我们可能需要给约束添加动画效果,以实现一些特殊的界面效果。本项目方案旨在介绍如何使用iOS的动画库以及AutoLayout来给约束添加动画效果。2.实现方案我们可以使用UIVie......
  • java ExecutorService 主线程不停吗
    如何实现"JavaExecutorService主线程不停"1.简介在Java中,可以使用ExecutorService来实现多线程任务的执行和管理。主线程指的是调用ExecutorService的线程,在任务执行完成之前,主线程通常是需要等待的,但有时候我们希望主线程不停止,而是继续执行其他操作。本文将介绍如何实现这......
  • 【14.0】Django框架之CBV添加装饰器的三种方式
    【一】给类方法加装饰器指名道姓的装--放在方法上面路由path('login_view/',views.MyLogin.as_view()),需要导入一个模块fromdjango.utils.decoratorsimportmethod_decorator视图fromdjango.viewsimportViewfromdjango.utils.decoratorsimportmetho......
  • centos7基础镜像添加nvidia依赖
    是这样的,我在用centos:7创建基础镜像并配置好环境以后,发现在容器中没有nvidia-smi命令这样:创建一个Dockerfile文件,添加如下,基础镜像根据自己的改一下FROMsegment_anything_env:202307171558LABELmaintainer"chentiao_create"RUNecho"/usr/local/nvidia/lib">>/......
  • C#添加自定义控件
    1.vs控件工具箱添加选项卡2.输入选项卡名称我这里是Emgucv3.点击选择项4.点击浏览找到Emgu.CV.Platform.NetFramework.dll这是emgucv的C#控件dll,并添加添加完成可以看到Imagebox等命名空间为Emgu.cv.UI的控件已添加5.点击确定添加完成......
  • 线程池 解析用定制线程池
    /***@authorkeming.chen*@date2021/6/1717:12*@desc解析用定制线程池**/publicclassParseThreadPools{/***默认使用线程数=cpu核数*2*/publicstaticfinalintMAX_THREADS=Runtime.getRuntime().availableProcessors();p......
  • 线程启动、结束,创建线程多法、join,detach
    线程启动、结束,创建线程多法、join,detach视频链接:https://www.bilibili.com/video/BV1Yb411L7ak/?p=4&spm_id_from=333.880.my_history.page.click&vd_source=4c026d3f6b5fac18846e94bc649fd7d0参考博主文章:https://blog.csdn.net/qq_38231713/article/details/106091372join......
  • 常用语言的线程模型(Java、go、C++、python3)
    背景知识软件是如何驱动硬件的?硬件是需要相关的驱动程序才能执行,而驱动程序是安装在操作系统内核中。如果写了一个程序A,A程序想操作硬件工作,首先需要进行系统调用,由内核去找对应的驱动程序驱使硬件工作。而驱动程序怎么让硬件工作的呢?驱动程序作为硬件和操作系统之间的媒介,可以......