[vlc-devel] [RFC v2 1/2] executor: introduce new executor API

Steve Lhomme robux4 at ycbcr.xyz
Wed Sep 2 14:11:15 CEST 2020


An even simpler example, run the same task twice sequentially:

struct my_task {
     vlc_executor_t *executor;
     bool first;
     char *str;
     struct vlc_runnable runnable;
};

static void Run(void *userdata)
{
     struct my_task *task = userdata;

     printf("start of %s\n", task->str);
     vlc_tick_sleep(VLC_TICK_FROM_SEC(3)); // long action
     printf("end of %s\n", task->str);

     if (task->first)
     {
         task->first = false;
         vlc_executor_Submit(task->executor, &task->runnable);
     }
     else
     {
         free(task->str);
         free(task);
     }
}

void foo(vlc_executor_t *executor, const char *str)
{
     // no error handling for brevity
     struct my_task *task = malloc(sizeof(*task));
     task->str = strdup(str);
     task->first = true;
     task->executor = executor;
     task->runnable.run = Run;
     task->runnable.userdata = task;
     vlc_executor_Submit(executor, &task->runnable);

     vlc_executor_Delete(executor);
}

Is it possible to submit a vlc_runnable that is already in use by the 
executor ?


More information about the vlc-devel mailing list