小编use*_*953的帖子

使用 procmon 了解共享冲突

我有一个应用程序构建(使用多个不同进程)的 procmon 跟踪,该应用程序在某些时候无法写入文件,因为它正在被另一个进程使用。我看到的第一件事是该文件在构建开始时被删除:

\n\n
3:49:32.9928378 PM  foo.exe 11460   QueryOpen   SUCCESS CreationTime: 8/26/2016 12:49:00 PM, LastAccessTime: 8/26/2016 12:49:00 PM, LastWriteTime: 8/26/2016 12:49:05 PM, ChangeTime: 8/26/2016 12:49:06 PM, AllocationSize: 57,344, EndOfFile: 56,624, FileAttributes: N\n3:49:32.9929337 PM  foo.exe 11460   CreateFile  SUCCESS Desired Access: Read Attributes, Delete, Disposition: Open, Options: Non-Directory File, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened\n3:49:32.9929791 PM  foo.exe 11460   QuerySecurityFile   SUCCESS Information: 0x20\n3:49:32.9930238 PM  foo.exe 11460   QueryAttributeTagFile   SUCCESS Attributes: N, ReparseTag: 0x0\n3:49:32.9930526 PM  foo.exe 11460   SetDispositionInformationFile …
Run Code Online (Sandbox Code Playgroud)

windows handle procmon

5
推荐指数
0
解决办法
1万
查看次数

Async/Await vs Parellel.For,在这种情况下哪个更好?

所以我有1000件物品来检查它们是否是最新的.这些项目中的每一项都需要读取数千个文件(其中一些文件可能是不同项目中的相同文件).

目前,这是使用TPL(异步/等待)的实现,一个用于每个必须读取的文件,一个用于它必须检查的每个项目.这工作正常,除了我描述它时,关于第3个最昂贵的函数是线程池中的TrySteal.

使用visual studio并发查看器,我看到99%的线程花费在并发相关项目上,而执行时只有1%.正是这一点让我觉得我可能只是创造了太多的任务(注意:我没有在任何地方使用Task.Run,​​只是等待).

Parellel.For是否比使用async/await读取一堆文件要少得多?使用任务编程库需要多少开销?

.net c# multithreading asynchronous

5
推荐指数
1
解决办法
97
查看次数

标签 统计

.net ×1

asynchronous ×1

c# ×1

handle ×1

multithreading ×1

procmon ×1

windows ×1