private static void CreateWriteThreads(ISimpleDictionary simpleDictionary, out Thread[] writeThreads, out BenchThreadParams[] writeThreadParameters)
        {
            const int writeThreadsCount = 2;
            const int writeValuesCount  = 10_000;

            writeThreads          = new Thread[writeThreadsCount];
            writeThreadParameters = new BenchThreadParams[writeThreadsCount];

            for (int i = 0; i < writeThreadsCount; i++)
            {
                var readThread = new Thread(BenchmarkThread)
                {
                    Name = $"Write thread #{i + 1}"
                };

                var writeList = Enumerable
                                .Range(i * writeValuesCount, writeValuesCount)
                                .Select(value => value * 100)
                                .ToList();

                var readThreadParameter = new BenchThreadParams(simpleDictionary, 0, writeList, true);
                writeThreads[i]          = readThread;
                writeThreadParameters[i] = readThreadParameter;
            }
        }
        private static void CreateReadThreads(ISimpleDictionary simpleDictionary, out Thread[] readThreads, out BenchThreadParams[] readThreadParameters)
        {
            const int readThreadsCount = 12;
            const int readValuesCount  = 1_000_000;

            readThreads          = new Thread[readThreadsCount];
            readThreadParameters = new BenchThreadParams[readThreadsCount];

            for (int i = 0; i < readThreadsCount; i++)
            {
                var readThread = new Thread(BenchmarkThread)
                {
                    Name = $"Read thread #{i + 1}"
                };

                var readThreadParameter = new BenchThreadParams(simpleDictionary, 0, Enumerable.Range(i * readValuesCount, readValuesCount).ToList(), false);
                readThreads[i]          = readThread;
                readThreadParameters[i] = readThreadParameter;
            }
        }