AddMul() публичный Метод

public AddMul ( byte dst, int dstPos, byte src, int srcPos, byte c, int len ) : void
dst byte
dstPos int
src byte
srcPos int
c byte
len int
Результат void
Пример #1
0
        private void Encode(byte[][] src, int[] srcOff, byte[][] repair, int[] repairOff, int[] index, int packetLength)
        {
            Parallel.For(0, repair.Length, new ParallelOptions()
            {
                MaxDegreeOfParallelism = _threadCount
            }, row =>
            {
                if (_cancel)
                {
                    return;
                }

                Thread.CurrentThread.IsBackground = true;
                Thread.CurrentThread.Priority     = ThreadPriority.Lowest;

                // *remember* indices start at 0, k starts at 1.
                if (index[row] < _k)
                {
                    // < k, systematic so direct copy.
                    Unsafe.Copy(src[index[row]], srcOff[index[row]], repair[row], repairOff[row], packetLength);
                }
                else
                {
                    // index[row] >= k && index[row] < n
                    int pos = index[row] * _k;
                    Unsafe.Zero(repair[row], repairOff[row], packetLength);

                    for (int col = 0; col < _k; col++)
                    {
                        if (_cancel)
                        {
                            return;
                        }

                        _fecMath.AddMul(repair[row], repairOff[row], src[col], srcOff[col], _encMatrix[pos + col], packetLength);
                    }
                }
            });
        }