Update AV1820: Only use async for I/O-bound or long-running activities#376
Open
dennisdoomen wants to merge 1 commit intodevelopfrom
Open
Update AV1820: Only use async for I/O-bound or long-running activities#376dennisdoomen wants to merge 1 commit intodevelopfrom
async for I/O-bound or long-running activities#376dennisdoomen wants to merge 1 commit intodevelopfrom
Conversation
Split from #298. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bkoelman
reviewed
Mar 29, 2026
| rule_id: 1820 | ||
| rule_category: performance | ||
| title: Only use `async` for low-intensive long-running activities | ||
| title: Only use `async` for I/O-bound or long-running activities |
Collaborator
There was a problem hiding this comment.
Suggested change
| title: Only use `async` for I/O-bound or long-running activities | |
| title: Only use `async`/`await` for I/O-bound operations |
It's unclear what "long-running activity" refers to. If it's I/O-bound, then yes. If it's CPU-bound, then no.
| severity: 1 | ||
| --- | ||
| The usage of `async` won't automagically run something on a worker thread like `Task.Run` does. It just adds the necessary logic to allow releasing the current thread, and marshal the result back on that same thread if a long-running asynchronous operation has completed. In other words, use `async` only for I/O bound operations. | ||
| The usage of `async` won't automagically run something on a worker thread like `Task.Run` does. It just adds the necessary logic to allow releasing the current thread, and marshal the result back on that same thread if a long-running asynchronous operation has completed. In other words, use `async` only for I/O-bound operations. |
Collaborator
There was a problem hiding this comment.
Suggested change
| The usage of `async` won't automagically run something on a worker thread like `Task.Run` does. It just adds the necessary logic to allow releasing the current thread, and marshal the result back on that same thread if a long-running asynchronous operation has completed. In other words, use `async` only for I/O-bound operations. | |
| The use of `async`/`await` won't automagically run something on a worker thread as `Task.Run` does. It just suspends execution at the await point and resumes execution after the task has completed. In other words, use `async`/`await` only for I/O-bound operations. |
Technically, async and await are distinct concepts, but I'm trying to keep it simple here. Execution doesn't always resume on the same thread, so I left that part out.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR updates guideline AV1820.
It was split out of #298 so the change can be reviewed independently.
Files:
Part of the replacement for #298.