Exemple #1
0
        public ThreadSafeQueue(bool useIndexes = false)
        {
            isIndexed  = useIndexes;
            isFinished = false;

            //выставляем ограничение на размер очереди исходя из разрядности,
            //максимальному стеку приложения в win32 для x86, ограничениям на размер объектов памяти у CLI для всех,
            //и количества физ.памяти на данный момент, которую можно использовать
            //(на скорость работы это никак не влияет, т.к. если где-то растёт очередь, то скорее всего
            //где-то не справляется один маленький writer
            //некоторая страховка от возможного Exception Out of Memory, особенно на x86
            blocksLimit = EnvironParameters.GetQueueBlocksLimit();
        }
Exemple #2
0
        //метод формирует титульную часть отчёта для пользователя и запись в лог файл
        private void GenerateReportsTitle()
        {
            long   fileLen = new System.IO.FileInfo(workParams.srcFile).Length;
            string message = String.Format("{0} ({1} байт) -> {2}, метод {3} ({4})",
                                           workParams.srcFile, fileLen, workParams.dscFile, workParams.coderEngine.coderName,
                                           Enum.GetName(typeof(eCoderMethod), workParams.coderEngine.coderMethod).ToLower());

            Console.WriteLine(message);
            Logger.WriteLog(String.Format("\n\nДата: {0}, время: {1}\n{2}",
                                          DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), message));

            message = String.Format("Кол-во потоков архиватора {0}, разрядность среды {1}",
                                    EnvironParameters.threadsCount, EnvironParameters.bitDepth);

            Console.WriteLine(message);
            Logger.WriteLog("\n" + message);

            Logger.WriteLog("\nОбъём свободной физической памяти: "
                            + EnvironParameters.memStatus.ullAvailPhys + " байт");
            Logger.WriteLog("\nОграничение на размер очереди: "
                            + EnvironParameters.GetQueueBlocksLimit() + " элементов");
        }