C# 多线程 怎么能够让他们并行执行,而不是像后台线程那样执行。

2024-12-12 20:33:19
推荐回答(4个)
回答1:

其实youngking87的回答,这个思路是可以的了,可能是楼主你没明白到底什么意思。
我举个例子让你好理解一些吧。

汽车工厂,仓库,汽车销售公司。

汽车工厂会不停的制造车辆,销售公司会不停的把还在仓库里的车子拿出去卖

在这个例子里,汽车工厂是第一个线程,销售公司时第二个线程,他们同时进行。
而仓库,就相当于是一个List。
工厂制造一台车,List就增加一条数据,销售公司每卖出一台车,List就相应删除一条数据。
工厂不会因为销售公司不卖车,或者卖太快,而不继续生产
反过来,销售这边如果没有车卖了,他会一直查看仓库里有没有车。

所以回过来说解决思路,new一个List全局变量,保证两个线程都能访问你的List。
同时new两个线程,每个线程里面都是 while(true) 循环,是死循环,保证时时性。
第一个线程,在while语句里时时接收 行情数据,存到List
第二个线程,在while语句里,判断List是否有数据,有的话就循环处理List中的第一条,没有的话就一直判断。注意在这里不能用for语句循环list,因为list由于在第一个线程中数据量会不停增加,所以这里执行for语句的话可能会报错,每处理完成一条,就把List中那条数据删掉。如果想保存处理记录,可以写成log文件或者存入数据库,之后while语句继续执行。

回答2:

直接两个线程即可,然后再建立一个List用来存放数据,一个线程不停取数据放在list里,另一个线程从list里取数据处理即可。不过访问list里的数据时要做同步访问,以为那个是临界区。

回答3:

可以使用System.Threading.AutoResetEvent ,不过为下策,使用会造成代码阅读性下降,维护性下降。当然用好也很不错

回答4:

并行执行就是两个Thread啦,你这里有优先极关系吗?

看说明 上好像是 处理数据最优先?