Let's say I have a BufferBlock with a bounded capacity of 2 and I link it (using LinkTo()) an ActionBlock with MaxDegreeOfParallelism = 2. Now, I know that I will immediately be able to send 2 items to the buffer and the ActionBlock will begin processing them immediately. But let's say the actions take a few seconds to complete. Will I be able to send 2 more items into the buffer while those first to actions are running or is an item only removed from the buffer after the action that is consuming it completes?
Are items removed from BufferBlock when ActionBlock starts or ends?
1.4k views Asked by PICyourBrain At
1
There are 1 answers
Related Questions in C#
- How to call a C language function from x86 assembly code?
- What does: "char *argv[]" mean?
- User input sanitization program, which takes a specific amount of arguments and passes the execution to a bash script
- How to crop a BMP image in half using C
- How can I get the difference in minutes between two dates and hours?
- Why will this code compile although it defines two variables with the same name?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Why can't I use the file pointer after the first read attempt fails?
- #include Header files in C with definition too
- OpenCV2 on CLion
- What is causing the store latency in this program?
- How to refer to the filepath of test data in test sourcecode?
- 9 Digit Addresses in Hexadecimal System in MacOS
- My server TCP doesn't receive messages from the client in C
- Printing the characters obtained from the array s using printf?
Related Questions in TASK-PARALLEL-LIBRARY
- Why use tasks and async await in C# inline?
- I used "lock" in the "task it doesn't work and race condition occurred
- Parallel.ForEach vs ActionBlock
- Wrapping a task in an async with a timeout?
- Employee details becoming null in C# Parallel.ForEach loop when fetching data from API
- Creating multiple db connections to get data in Parallel in C# asp.net entity framework
- How to send multiple requests to a server at few milliseconds of interval in C#
- Why Task needs to use ManualResetEventSlim internally?
- Parallel computation is slower than normal sequential loop
- Why ExecuteSynchronously is not the default for async await?
- Inconsitent detection of joystick button input using SDL in C# with the use of TPL
- Xunit Integration Test-Async method not completing when tests run in parallel
- Thread.Sleep() vs Task.Delay().Wait()
- How to run BackgroundService by counter using Task?
- How does cancellation acknowledgment work for async continuations?
Related Questions in TPL-DATAFLOW
- Parallel.ForEach vs ActionBlock
- TPL ActionBlock not handling messages after an exception
- Completion is not being propagated between dataflow blocks
- C# .NET API Slow produce over SSE using Dataflow block
- Does DataFlow Object need to be locked if same object used in different thread
- Pattern pipeline performance implementation
- Dataflow with BatchBlock - producer runs ahead
- VS 2022 CPU profiling not giving meaningful results when using TPL Dataflow
- Rabbit MQ thread safety in an IHostedService
- Why does my ActionBlock get a state of completed without me setting it?
- TPL DataFlow not executing
- How to stream result from n parallel requests send to x clients concurrently?
- TPL Dataflow with Rx: Observer misses messages
- TPL Dataflow block that modifies state and sends a single message after it completes
- HttpClient taking too long
Related Questions in BUFFERBLOCK
- BoundedChannel, BufferBlock or something else?
- TPL Dataflow two-phase commit
- TPL BufferBlock.ReceiveAsync receiving same item twice
- TPL Dataflow Complete Pipeline when condition matches
- Task.WhenAny acting like Task.WhenAll
- TPL BufferBlock Consume Method Not Being Called
- TPL Unit Test BufferBlock LinkTo TargetBlock
- OpenGL 4.5 - Shader storage buffer objects layout
- Are items removed from BufferBlock when ActionBlock starts or ends?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
If your
ActionBlockhas an unbound capacity the bounded capacity on yourBufferBlockwon't matter, theActionBlockwill buffer all of your items until you run out of memory. If, however, you've set theBoundedCapcityon yourActionBlockto 2 as well asMaxDegreeParallelismto 2 it will be processing two messages and holding 2 messages in it's buffer. Then your buffer block will buffer 2 additional messages. Any additional messages will need to wait for capacity in your pipeline. The best way to wait for space to free up is usingawait myPipeline.SendAsync(data). In total you would have a capacity of 6 for the entire pipeline.