首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >性能优化-实现并发构建器模式

性能优化-实现并发构建器模式
EN

Stack Overflow用户
提问于 2021-09-02 12:03:58
回答 1查看 49关注 0票数 0

我在代码中实现了一个复杂的构建器模式,类似于this URL中的最后一个模式。构建器的目的是基于对象属性构造SQL查询。

就像这样

代码语言:javascript
复制
PersonQueryBuilder person =
                new PersonQueryBuilder.Builder()
                        .BuildAddressClause(request.PersonInformation.Address)
                        .BuildBankAccountClause(request.PersonInformation.BankAccountInformation)
                        .BuildAClause(request.Something)
                        .BuildBClause(request.Something)
                        .build();

我在想,与其顺序执行这些构建器逻辑,不如用以下命令运行它们会更高效

代码语言:javascript
复制
TaskFactory.StartNew(() =>
{
// Create builder here so that the builder pattern stays the same, but the process runs concurrently.
});

有没有什么方法/例子可以演示类似的行为?

EN

回答 1

Stack Overflow用户

发布于 2021-09-02 12:09:40

首先,在最近的C#中,您使用Task.Run(...)而不是TaskFactory.StartNew(...)来启动运行该函数的后台任务。然而,这不会让构建器并行运行,对于CPU受限工作的并行化(我假设构建器不执行任何磁盘/网络I/O),您可以使用Parallel类,Parallel.Invoke似乎适合您的情况。

然而,当使用并行类时,你需要确保不同的构建器不会改变相同的状态,例如,不要操作代表SQL查询的共享StringBuilder。如果你需要改变相同的状态,你可以在需要线程安全的地方引入锁,但是要确保并行化确实是合理的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69029923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档