Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2016, 11:52   #1
warhazar
 
Регистрация: 25.03.2010
Сообщений: 4
По умолчанию Не могу создать больше 47 одновременно работающих ofstream потоков.

В общем вот пример:
Код:
...
      ofstream *test[60];
        String t;
        for(int i=1;i<=46;i++)
        {
            t="test"+String(i)+".log";
            test[i]=new ofstream(t.c_str(),std::ios_base::trunc);
            (*test[i])<<"текст"<<i<<std::endl;
        }
 
     ofstream test1;
     test1.open("test47.log",std::ios_base::trunc);
 
     ofstream test2;
     test2.open("testNotWork.log",std::ios_base::trunc);
     Form1->Memo1->Text=strerror(test2.rdstate());
...
Первые 47 потоков создаются и работают хорошо, последующие просто не создаются. Может проблема в среде radstudio xe7?

Последний раз редактировалось warhazar; 12.07.2016 в 12:10.
warhazar вне форума Ответить с цитированием
Старый 12.07.2016, 13:16   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Вероятно ограничение на количество одновременно открытых файлов, нужно открывать другими способами
eoln вне форума Ответить с цитированием
Старый 12.07.2016, 13:36   #3
warhazar
 
Регистрация: 25.03.2010
Сообщений: 4
По умолчанию

Я тоже так думаю, только вот как снять это ограничение? А какие еще есть способы, я знаю еще вариант fopen но там тоже самое, дефайн FOPEN_MAX не работает изменяй как хоч а разницы нет.
warhazar вне форума Ответить с цитированием
Старый 12.07.2016, 13:44   #4
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Максимальное число одновременно открытых файлов 50 шутк. Это ограничение ОС ещё со времён ДОС 3.
Выхода тут два:
1) Переписать ОС.
2) Не насиловать ОС и жёсткий диск, а переписать логику программы на последовательную работу.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 12.07.2016, 14:06   #5
warhazar
 
Регистрация: 25.03.2010
Сообщений: 4
По умолчанию

тогда еще 1 вопрос почему на джаве это работает:
Код:
                FileWriter[] fw=new FileWriter[100];
		for(int i=0;i<fw.length;i++)
		{
			fw[i]=new FileWriter(String.format("test%d.log",i));
			fw[i].write("test "+String.valueOf(i));
			fw[i].flush();
			
		}
        System.out.println("END!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
Я понимаю что там виртуальная машина но файлы то открыты и удалить их нельзя.
Да и потом если три раза запустить программу получиться свыше ста открытых файлов, которых удалить нельзя (пока они открыты).

Последний раз редактировалось warhazar; 12.07.2016 в 14:12.
warhazar вне форума Ответить с цитированием
Старый 12.07.2016, 14:10   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
radstudio
Попробуй TFileStream. Не знаю как у него с ограничениями, но 500 файлов одновременно открытыми держит легко
eoln вне форума Ответить с цитированием
Старый 12.07.2016, 14:56   #7
warhazar
 
Регистрация: 25.03.2010
Сообщений: 4
По умолчанию

Работает спасибо!
warhazar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Я больше не могу... Виталий Желтяков Свободное общение 149 01.10.2021 16:55
Как сделать больше 10 потоков BoT_T Общие вопросы Delphi 5 02.01.2011 18:30
У N одновременно запущенных потоков приходит N события с одними и теми же параметрами TwiX Работа с сетью в Delphi 3 20.02.2010 21:17
Как дописывать в файл с помощь потоков? (ofstream) TwiX Общие вопросы C/C++ 3 23.12.2009 23:02
несколько одновременно работающих копий программы - ? Evgenii Общие вопросы Delphi 3 06.07.2009 09:38