C#多线程之间事件通知
|
我有两个线程,
线程1接受网络数据,存到队列; 线程2取队列,进行各种复杂的处理然后绘制到界面上; 想让线程1有数据了通知线程2,线程2再取队列,因为不通知的话,线程2一直在while循环检索队列时候有东西,很费cpu,怎么弄? 我现在用的是C#的ManualResetEvent,线程1给队列中加数据时,置为有信号, 线程2中,队列为空置为无信号,这样问题是置了好多个有信号,好浪费 也想过有AutoResetEvent,就怕两次set激活事件时间间隔太短会有问题........ 怎么办啊????,不要循环检查而是等到1的通知 更多0分享到:
|
|
#1 得分:20回复于: 2014-03-10 22:42:37
![]() 请百度 生产者与消费者。。。就会得到你想要的 |
|
|
#2 得分:0回复于: 2014-03-10 22:44:05
AutoResetEvent 用这个没问题的,
就算你两次Set 只要上次没执行完,就是没进入到WaitOne()阻塞,你执行多少次Set都没用 |
|
|
#3 得分:0回复于: 2014-03-10 22:56:36
引用 2 楼 wyd1520 的回复:
自动重置事件,两次set时间间隔很小的话,另一个线程WaitOne继续一次的,那就不对了, |
|
#4 得分:20回复于: 2014-03-10 23:05:21
你搞错了吧 线程1 有数据调用XXXEnQueue private void XXXEnQueue(xxx) 进队列 private xxx XXXDequeue() //取头元素 whiile(auto.WaitOne()) 这样就成了 |
|
|
#5 得分:0回复于: 2014-03-10 23:29:17
那什么时候reset()?还有多个线程之间都可以auto.Set()吗?没加锁啊
|
|
#6 得分:0回复于: 2014-03-10 23:30:05
那什么时候reset()?还有多个线程之间都可以auto.Set()吗?没加锁啊
|
|
#7 得分:0回复于: 2014-03-10 23:46:34
你去reset()他做啥,根本不用reset();
多个线程之间当然可以auto.Set(),你要了解生产者与消费者。关系。而不是一脑子在set reset上 |
|
|
#8 得分:0回复于: 2014-03-11 13:19:19
我说的是手动事件reset;
您没听懂我的原问题........ 如果用自动事件会是这样(有问题的): |
|
#9 得分:0回复于: 2014-03-11 22:00:07
用Monitor.Pulse解决!
|
C#多线程之间事件通知的更多相关文章
- python处理多线程之间事件通讯方法
一.什么是事件 每执行一个事情,肯定有该事情的执行后状态,那事件就是该事情发生的信号 在程序中,多线程之间需要通讯,而事件就是方便线程之间的通讯 案例: 1.服务器启动需要5秒 2.客服端启动后去链接 ...
- C#多线程同步事件及等待句柄AutoResetEvent 和 ManualResetEvent
最近捣鼓了一下多线程的同步问题,发现其实C#关于多线程同步事件处理还是很灵活,这里主要写一下,自己测试的一些代码,涉及到了AutoResetEvent 和 ManualResetEvent,当然还有也 ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- Linux内核基础--事件通知链(notifier chain)
转载: http://blog.csdn.net/wuhzossibility/article/details/8079025 http://blog.chinaunix.net/uid-277176 ...
- 【java】-- 多线程之间实现通讯
1.多线程之间如何实现通讯 1.1.什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同. 画图演示 1.2.多线程之间通讯需求 需求:第一个线程写入(inpu ...
- Linux内核基础--事件通知链(notifier chain)good【转】
转自:http://www.cnblogs.com/pengdonglin137/p/4075148.html 阅读目录(Content) 1.1. 概述 1.2.数据结构 1.3. 运行机理 1. ...
- Linux内核基础--事件通知链(notifier chain)【转】
转自:http://blog.csdn.net/wuhzossibility/article/details/8079025 内核通知链 1.1. 概述 Linux内核中各个子系统相互依赖,当其中某个 ...
- (25)zabbix事件通知
概述 我们前面花了大量时间去讲解item.trigger.event都是为发送报警做准备的,什么是事件通知呢?简单的说故障发生了,zabbix会发邮件或者短信给你,告诉你服务器的一些状况. 如果没有通 ...
- Java多线程Condition定点通知
多线程之间按顺序调用,实现A->B->C三个线程启动,要求如下:A打印5次,B打印10次,C打印15次接着 A打印5次,B打印10次,C打印15次 来10轮 package com.yan ...
随机推荐
- BP 算法之一种直观的解释
0. 前言 之前上模式识别课程的时候,老师也讲过 MLP 的 BP 算法, 但是 ppt 过得太快,只有一个大概印象.后来课下自己也尝试看了一下 stanford deep learning 的 wi ...
- 廖雪峰Java13网络编程-3其他-1HTTP编程
1.HTTP协议: Hyper Text Transfer Protocol:超文本传输协议 基于TCP协议之上的请求/响应协议 目前使用最广泛的高级协议 * 使用浏览器浏览网页和服务器交互使用的就是 ...
- IDE 插件新版本发布,开发效率 “biu” 起来了
近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明. 本地应用一键 ...
- C++ Builder VCL库函数简介
C++ Builder VCL库函数简介 2002-07-05· · ··C++builder资源中心 1 2 3 下一页 一.BORLAND C++ BUILDER VCL的内存管理函数 1. Al ...
- QQ交流群
- 大文件传输 分片上传 上传id 分片号 授权给第三方上传
https://www.zhihu.com/question/39593108 作者:ZeroOne链接:https://www.zhihu.com/question/39593108/answer/ ...
- “Error: Encountered an improper argument”的解决方法
之前遇到过的问题,后来解决后再次遇到又忘记了, 这是keil 的bug 路径只要都是字母就可以了
- 第一周课堂笔记2th
上课笔记2th https://mubu.com/doc/2gxvIvVLG0(老师笔记网址) 1. python python运行过程 把源代码转化成字节码(机器不能识别) 也可能不产生py ...
- jquery移除元素某个属性
removeAttr() 方法从被选元素中移除属性. 例如:$("p").removeAttr("style");
- springboot 2+ druid
springboot 1+ druid druid 配置 import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid ...

