boyyao 04月14日
请问在密集计算的任务中,能真正做到多线程“同时”运行计算么?
有个签名的函数。因为时常要同时签名多条数据。 假设每次签名需要10ms时间。我一次需要签名10条数据。顺序签名需要100ms。按理说我开10个TASK 同时签名 按理说如果cpu资源“足够”的情况下 TASK完成时间应该是10ms加上一点损耗。。 但是实际上 TASK完成时间有时候甚至能超过100ms(顺序运行的总和时间)。。后来去查了一下资料。发现很多语言都有线程锁。实际只是“并发”,而不是“并行”在计算。
为了验证是否硬件资源问题。我尝试用多个进程跑同样的连续单线程签名的程序。得到的结果也也似乎验证了 线程只是并发运行。(多个进程下。每个进程使用的签名时间都是10ms,当然有误差和cpu占用的损耗)。。


所以。我想请问2个问题

1,C# 能否自身做到真正的“并行”多线程执行?

2,如果无法并行处理。那么我打算用多进程方式解决。那么请问为了降低两个进程间的延迟。请问用那种多进程间通讯方式?大概查了一下。有ipc、共享内存等。。 。我是在.net core下用。。程序在windows下开发调试。在linux下运行。 也就是说最好能兼容两种系统。并且通讯延迟要越低越好。至少在毫秒内的。请问我应该着重去找哪方面的资料?

...全文
2112 点赞 收藏 22
写回复
22 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告