.net 多线程并发问题

问题描述

要实现的功能:在列表中选择某行数据发布到显示屏进行显示,并且是隔一秒执行一次现在有多行数据,进行并发执行,如何实现?button_click(){varvalue=SelectedValue;Threadthread=newThread(newParameterizedThreadStart(Callback));objecto=value;thread.Start(o);}voidCallback(objectvalue){ObservableCollection<InfoItem>infoItems=Server.Service.SearchInfoItem(value.LEDId);while(value.isUse){公有的调用函数coilcount=getCoilcount();show(value,infoItems,coilcount);}}单独选择某行数据进行执行可以,如果多个同时并发执行就出现数据混乱。麻烦高手相助!

解决方案

解决方案二:
原因是因为你每次启动了一个新的线程,他们产生了竞态有好多种方法可以解决自己挑一个把1.使用lock锁,一个没完成前,其他线程只能等待2.使用线程安全队列,队列本身是先进先出,所以你后面怎么玩都是一个顺序3.使用thread.join让他们同步
解决方案三:
比较常用的就是加lock了
解决方案四:
你去查一下互锁,临界区这两个概念,就知道为什么有上诉原因了,一楼说的就是解决方法!
解决方案五:
共享资源没有上锁
解决方案六:
如果加lock就变成单线程模式了实现的方法:选择某行,执行发布,都是同步执行,互相不影响到数据(调用到同一函数)麻烦帮忙解答一下,谢谢!
解决方案七:
只lock住show这个方法(加上上面的coilCount?)不可以吗?感觉这段代码才是导致楼主说的数据混乱的关键。就是等我show完之后你才能进来show,不然两个同时在show是什么回事嘛。涉及到全局资源的话肯定只能是锁了,这个资源一次只能被一个线程使用才是。
解决方案八:
coilCount获取是值都是一样的,这个没关系。因为多了个while循环某个数据进行轮播如果等一个执行完,在执行另外一个,就达不到效果。show是公有资源,包含连接设备上传数据并显示

时间: 2024-11-08 22:04:22

.net 多线程并发问题的相关文章

Linux下基于socket多线程并发通信的实现

pthread_server.c /*************************************************** * 文件名:pthread_server.c * 文件描述:创建子线程来接收客户端的数据 ***************************************************/ #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #in

银行取款[多线程]{未进行线程同步}(junit不适合多线程并发单元测试)

        由于计算机多任务.多进程.多线程的支持,使得计算机资源的服务效率提高,服务器对请求的也使用线程来相应,所有,代码中涉及到同时对共享数据的操作,将在 多线程环境中操作数据,导致数据安全问题.      经典例子:老婆(朱丽叶)老公(罗密欧),使用银行卡和存折,或者网银等,同时对同一账户操作的安全问题.      如果要保证多线程下数据安全,就要实现线程同步(例如:一间小厕所,就得有一个锁,保证同一时间为一个人服务).其他文章讲: 此处用多线程实现,同时取款的模拟实现,未进行线程同步

解决Java多线程并发的计数器问题

问题描述 解决Java多线程并发的计数器问题 3C public class Counter { public static int count = 0; public synchronized static void inc() { count++; } public static void main(String[] args) { //同时启动1000个线程,去进行i++计算,看看实际结果 for (int i = 0; i < 1000; i++) { new Thread(new Ru

MFC定时器并发转多线程并发的代码优化问题

问题描述 MFC定时器并发转多线程并发的代码优化问题 MFC定时器并发进一步优化为多线程并发,在双核联想品牌笔记本上运行速度没有提高的原因是什么? 解决方案 主要是检查你的线程是不是并发执行的还是过度进行了同步. 解决方案二: 先要看你的并发线程的任务能不能够都同时处理.

单元性能测试之使用JUnitPerf测试多线程并发

简介: 单元测试和性能测试在测试领域属于要求相对较高的测试活动,也是测试工程师成长.向上发展的反向.单元测试评测我们的代码实现功能的情况,性能测试则企图分析应用程序的性能表现和负载能力.那么"单元性能测试"能做什么?我们可以这样说,单元性能测试以单元测试的形式对代码进行性能测试.单元性能测试像单元测试一样,需要测试人员编写测试代码,但现在关注的不是代码的功能实现情况了,而是想得到被测试代码的性能数据,包括执行方法耗时.多线程并发是否线程安全.内存是否泄漏.是否存在短期循环对象等.单元性

java 关于类似售票系统的多线程并发 的问题

问题描述 java 关于类似售票系统的多线程并发 的问题 本人对多进程和多线程不大了解,还请各位高手解答下,先谢了.问题如下: 1.多线程的并发,我查了下资料,一般解释的是:一个进程可以包含多个线程,一个线程完成一个功能,这样,进程执行的时候,它包含的多个线程可以看成同时执行. 那多线程的并发,可不可以有另外的理解:如果这时的某个进程只有一个线程,那么,同时有多个类似的进程同时启动,这时是不是就产生了多个进程下要同时完成相同任务的多个线程,这算不算多线程的并发? 下面拿售票系统举例说明下, 2.

一个有关MFC定时器并发如何改写成多线程并发的问题

问题描述 一个有关MFC定时器并发如何改写成多线程并发的问题 请问MFC中定时器并发所用到的消息函数转换成多线程并发以后,这些参数都需要做转换么?没有消息函数如何实现并发调用执行的功能呢? 解决方案 http://blog.csdn.net/wangweitingaabbcc/article/details/6723606 解决方案二: http://blog.csdn.net/zhandoushi1982/article/details/6041430

spring-boot | 多线程并发定时任务

刚刚看了下Spring Boot实现定时任务的文章,感觉还不错.Spring Boot 使用Spring自带的Schedule来实现定时任务变得非常简单和方便.在这里个大家分享下. 开启缓存注解 @SpringBootApplication @EnableScheduling //开启定时任务 public class Application { public static void main(String[] args) { SpringApplication.run(Application.

请问多线程并发计算,是不是只能通过变量获得返回值?

问题描述 请问多线程并发计算,是不是只能通过变量获得返回值? 请问多线程并发计算,是不是只能通过变量获得返回值?如果不用变量,线程函数里的返回值返回到哪里去了? 解决方案 和你调用一般的函数一样,如果你不用变量接收,那么,这个返回值就被忽略了. 解决方案二: 可以用公共变量,但是要注意冲突,还可以通过发消息,给其他线程

MFC定时器伪并发区别于多线程并发的理解

问题描述 MFC定时器伪并发区别于多线程并发的理解 是不是这么理解MFC定时器伪并发?因为定时器是基于中断技术的,所以只有一个cpu执行,效率低,多线程是基于操作系统的,所以是多cpu执行,效率高? 解决方案 http://bbs.csdn.net/topics/390609917