powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как при уничтожении объекта std::bind закрыть файл?
11 сообщений из 11, страница 1 из 1
Как при уничтожении объекта std::bind закрыть файл?
    #39636148
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создавая асинхронную задачу, я передаю в нее bind, который внутри себя хранит указатель на файл:
Код: plaintext
1.
2.
3.
4.
std::ifstream* File = new std::ifstream;
ReadFile(std::ifstream * const File, cstring& FileName);
...
AsyncTask* CurrentTask = new AsyncTask(std::bind(ReadFile, File, FileName));



Как при выполнении задачи освободить ресурсы:
Код: plaintext
1.
delete File;



По логике указатель на файл должен жить пока живет bind, но как из него вызвать освобождение памяти указателя?
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636151
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

shared_ptr
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636197
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLкоторый внутри себя хранит указатель на файл

А должен - ссылку на файл.
Код: sql
1.
2.
3.
4.
std::ifstream File;
ReadFile(std::ifstream& File, cstring& FileName);
....
AsyncTask* CurrentTask = new AsyncTask(std::bind(ReadFile, std::move(File), FileName));


Или вообще убрать File снаружи, оставить как локальную переменную ReadFile.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636206
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovAlekseySQLкоторый внутри себя хранит указатель на файл

А должен - ссылку на файл.
Код: sql
1.
2.
3.
4.
std::ifstream File;
ReadFile(std::ifstream& File, cstring& FileName);
....
AsyncTask* CurrentTask = new AsyncTask(std::bind(ReadFile, std::move(File), FileName));


Или вообще убрать File снаружи, оставить как локальную переменную ReadFile.


Я сначала открываю файл и если я его сделаю локальной переменной передав ссылку, то эта переменная умрет при выходе из функции.
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636208
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyAlekseySQL,

shared_ptr

Спасибо! Должно взлететь :)
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636233
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЯ сначала открываю файл и если я его сделаю локальной переменной передав ссылку, то эта
переменная умрет при выходе из функции.

И это правильно, если всю работу с файлом производить только внутри функции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636236
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovAlekseySQLЯ сначала открываю файл и если я его сделаю локальной переменной передав ссылку, то эта
переменная умрет при выходе из функции.

И это правильно, если всю работу с файлом производить только внутри функции.


Так у меня эта задача выполняется асинхронно, т.е. неизвестно через сколько времени. Когда задача начнет выполняться файл уже будет закрыт и ресурсы освобождены...
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636256
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLТак у меня эта задача выполняется асинхронно, т.е. неизвестно через сколько времени. Когда
задача начнет выполняться файл уже будет закрыт и ресурсы освобождены...
Именно поэтому задача должна самостоятельно открывать файл когда понадобится и
освобождать когда он не нужен. "Снаружи" файл не нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636268
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovИменно поэтому задача должна самостоятельно открывать файл когда понадобится и
освобождать когда он не нужен. "Снаружи" файл не нужен.


В асинхронную часть у меня перенесена только работа с диском, все расчеты делают основные потоки. Так что открытый файл все- таки должен "торчать наружу".
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636272
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLВ асинхронную часть у меня перенесена только работа с диском, все расчеты делают основные
потоки. Так что открытый файл все- таки должен "торчать наружу".

Зачем? Для чего этот открытый файл нужен кроме как для "работы с диском"?

Опять устраиваешь спагетти. Закукливай задачи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как при уничтожении объекта std::bind закрыть файл?
    #39636273
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно при вызове функции переместить в нее параметры (не скопировать и не передавать по ссылке, указателю)?

Дело в том, что я хочу unique_ptr хочу передать в функцию, но он позволяет только перемещения.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как при уничтожении объекта std::bind закрыть файл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]