- 主题:这种多线程需求如何设计?
无法并发的逻辑无法使用多线程,
【 在 capriccio 的大作中提到: 】
: 每次myfunc的计算结果要按照从缓存中取出数据的顺序进行排列,而且对实时性要求较高,
: 所以缓存也不大,不能攒一批数据后再并行调用myfunc。
: 虽然也能达到目的,但要满足上面的限制条件,程序会比较复杂,我只是想问问有没有我没有了解到的能比较简单的解决这个问题的方法。
: ...................
--
FROM 36.112.179.*
不应该开两个固定的线程,然后去生产c和d,然后再从主线程消费cd吗
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
: myfun()
: {
: ...................
--
FROM 221.223.25.*
只需要开两个线程,分别执行funcA,funcB,每个线程一个消息队列。很多实时信号处理都是这种pipiline形式,提高吞吐量。
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
: myfun()
: {
: ...................
--
FROM 220.194.45.*
无法并行的逻辑如果加起来已经超过1/4000秒的话,要么进一步优化单个调用,要么拆分任务,跑多个进程分摊4000HZ的压力
单线程4000HZ的场景,我这么多年都还没见过
--
FROM 222.129.4.*
把缓存放大点,用不用多线程都不是问题
0.3ms,换多线程的话,连线程切换的成本都搞不回来
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
: myfun()
: {
: ...................
--
FROM 221.218.208.*
如何做到每秒运行4000次?就算是个空函数每秒执行4000次也不那么好实现吧?win和linux都不是实时系统,随便任务调度一下几十毫秒就没了。
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
: myfun()
: {
: ...................
--
FROM 117.136.117.*
你确定你需要并行处理funA和funB?这两个函数花多少时间?
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
: myfun()
: {
: ...................
--
FROM 72.199.121.*
把getdata放到外边去,ab作为参数传进来。
然后并行myfun。用线程池,线程数=核数。一个线程getdata,发送到myfun线程池。
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
: myfun()
: {
: ...................
--
修改:ylh0315 FROM 221.221.53.*
FROM 221.221.53.*
你需要重构你的代码。
多线程远远没有你想的这么简单。线程的创建 删除 同步 切换都需要消耗大量的时间。
反正你的这种写法肯定不对上。300毫秒的时间,线程本身上消耗都要占用好多。
【 在 capriccio 的大作中提到: 】
: 伪代码如下:
:
: myfun()
: ...................
--来自微微水木3.5.12
--
FROM 140.206.195.*
分配线程每批读1000组ab,发到myfunc线程池的一个线程,这个线程串行的调用1000次myfunc。
再读1000组分配给下一个线程。线程都满了等待。谁干完了唤醒分配器再次取得数据。这样可以减小线程切换开销。
1000组切换一次。
批量数可以通过配置文件设定,试试多大批量速度最快。
【 在 KillnCov 的大作中提到: 】
: 你需要重构你的代码。
: 多线程远远没有你想的这么简单。线程的创建 删除 同步 切换都需要消耗大量的时间。
: 反正你的这种写法肯定不对上。300毫秒的时间,线程本身上消耗都要占用好多。
--
修改:ylh0315 FROM 221.221.53.*
FROM 221.221.53.*