Je suis toujours en train de faire un coup de TPL DataFlow alors supportez-moi.Est-ce qu'un lien ActionBlock vers un autre ActionBlock peut contenir plus de paramètres?
Mon application nécessite que la file d'attente soit exécutée en parallèle tout en conservant son ordre. Cela m'a conduit à la bibliothèque DataFlow et à ce que j'essaie de faire. Je me demande s'il existe un moyen de lier un ActionBlock à un autre et si le second prend une valeur du premier à fonctionner.
pseudo-exemple:
var block1 = new ActionBlock<ByteBuffer>(buffer => {
// code generating a hash of the byte buffer to pass to next block
ulong hash = generateHash(buffer);
// this is what i would like to pass to the next ActionBlock
var tup = Tuple<ByteBuffer, ulong>(buffer, along);
}, dataFlowOpts);
var block2 = new ActionBlock<Tuple<ByteBuffer, ulong>(tup => {
/* code to act on the buffer and hash */
}, dataFlowOpts);
block1.LinkTo(block2); // Is there something like this that would use the correct params?
Est-ce que je suis en train de faire possible? Cela a-t-il même un sens? La raison pour laquelle j'ai ces séparés en deux ActionBlocks
est que je voudrais réutiliser block2 dans un autre chemin de code (hacher différemment le contenu d'un différent ByteBuffer
.)
Peut-être qu'il y a un meilleur moyen? Vraiment, je suis juste en train d'essayer de hacher les objets comme ils arrivent simultanément tout en conservant l'ordre du FIFO car c'est trop lent pour les hacher de manière synchrone.
Avez-vous envisagé d'utiliser Rx - Microsoft Reactive Framework? (NuGet "System.Reactive") – Enigmativity