Harendra Kumar
Harendra Kumar
Currently we do not reserve the buffer in outputQueue before executing an action. Instead we execute the action and yield the result to the outputQueue, at the time of yielding...
Currently we have a shared-nothing concurrency support where concurrent threads share a global read-only state. However, we can modify the state in different threads and combine the changes using a...
We have `inspectMode` to inpsect an SVar. But this is of limited use because it dumps the information only when the stream ends or when the SVar is cleaned up....
For APIs that use only a few results from the stream we restrict concurrency to a maximum of those many threads (using `maxYields` internally). However, this may not be correct...
Currently we implement concurrency only for monadic computations. However, the same model can be extended to pure computations as well. For example, the `map` operation mapping a pure function to...
The compact-list package https://hackage.haskell.org/package/compact-list implements an append only list in a compact region. This list can be used for buffering the data generated by concurrent threads before the consumer consumes...
The way `zipWith` and `zipAsyncWith` zip two streams using a zip function, the same way `mergeWith` and `mergeAsyncWith` would merge two streams using a merge function. The merge operation just...
We measure and use the worker latencies to limit the throughput of a stream. However, the measurement works only after the first or a first few elements have been yielded....
The `maxRate` combinator is used for limiting the yield rate of a stream. This works quite well but there are still a number of aspects that can be improved. The...
We have added `maxThreads` and `maxBuffer` to control the upper bounds on outstanding threads and buffered results. But there are more possibilities to allow fine grained control by the programmer....