Mik*_*ain 5 c# roslyn roslyn-code-analysis
我已阅读此方法的文档,但细节相当少。
启用此分析器注册的分析器操作的并发执行。
到底并发执行了什么?假设我有:
public override void Initialize(AnalysisContext context)
{
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeNode, SyntaxKind.InvocationExpression);
}
Run Code Online (Sandbox Code Playgroud)
如果被分析的代码包含多个InvokingExpressions,每个表达式是否会在自己的线程上同时分析?
然而,这样的分析器必须确保其动作能够正确地并行执行。
什么构成“操作”?如何确保它“正确”执行?我的AnalyzeNode方法是static,从不可变状态读取,并且不写入任何共享状态。这够了吗?
启用并发执行有什么缺点吗?
或者我完全误解了这一点?
如果被分析的代码包含多个InvokingExpressions,每个表达式是否会在自己的线程上同时分析?
确实,他们可能是。显然不能保证它们是,只有这么多线程。
什么是“行动”
“操作”是您使用诸如 之类的方法注册的委托RegisterSyntaxNodeAction。
我的
AnalyzeNode方法是static,从不可变状态读取,并且不写入任何共享状态。这够了吗?
是的。
启用并发执行有什么缺点吗?
如果您的操作是读取和写入共享状态,您要么必须同步这些访问,要么不启用并发执行。
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |