Доброго времени суток ЛОР. Стоит задача запустить в отдельном потоке функцию загрузки данных от главной формы.
Для этого использую GIOScheduler.
Ест функция самой загрузки:
void load(GInputStream* input_stream, GCancellable* cancellable)
{
...
}
Сама функция загрузки работает 100%. Затем есть функция которую нужно отправить в отдельный поток:
void loading(MainWin* mw)
{
GInputStream* input_stream = g_file_read(loading_file, mw->generator_cancellable, NULL);
mw->data = load(G_INPUT_STREAM(input_stream), mw->generator_cancellable);
}
Пытаюсь отправить следующим образом:
g_io_scheduler_push_job( job_func1, mw, NULL, G_PRIORITY_DEFAULT, mw->generator_cancellable);
Где job_func:
static void job_func1(GIOSchedulerJob *job, GCancellable *cancellable, gpointer user_data)
{
MainWin* mw = (MainWin*)user_data;
while(!g_cancellable_is_cancelled(mw->generator_cancellable))
{
g_io_scheduler_job_send_to_mainloop(job, loading, mw, NULL);
}
}
При запуске программы, при вызове loading ничего данные не загружаются + быстро утекает память.
В чем может быть проблема. 3 суток сижу ничего не могу придумать.
Спасибо