This example shows how to use an Ecore_Job. See the explanation here.
#include <Ecore.h>
#include <unistd.h>
static void
_job_print_cb(void *data)
{
   char *str = data;
   printf("%s\n", str);
}
static void
{
}
int
main(void)
{
   char *str1 = "Job 1 started.";
   char *str2 = "Job 2 started.";
   char *str3 = "Job 3 started.";
     {
        printf("ERROR: Cannot init Ecore!\n");
        return -1;
     }
   (void)job1;
   (void)job3;
   (void)job_quit;
   printf("Created jobs 1, 2, 3 and quit.\n");
   if (job2)
     {
        char *str;
        job2 = NULL;
        printf("Deleted job 2. Its data was: \"%s\"\n", str);
     }
   return 0;
}