У меня есть некоторый код, выполнение которого занимает короткое время. Я бы хотел, чтобы он обрабатывался в отдельном потоке, так как он в основном заблокирован IO. Для этого я реализовал следующее, но когда вызывающий поток запускает background_picture_save()
, он, кажется, блокируется. Почему?
Я пытаюсь заставить функцию save_picture()
работать как фоновый процесс.
static void * threaded_save_picture(void * p);
static void * threaded_save_picture(void * p)
{
char optarg[512];
strncpy(optarg, p, sizeof optarg); optarg[sizeof optarg - 1] = '\0';
fprintf(stderr,"%s()::%s\n",__FUNCTION__,optarg);
save_picture(optarg);
pthread_detach(pthread_self());
return(p);
} /* threaded_save_picture() */
extern void background_picture_save(const char * const optarg);
void background_picture_save(const char * const optarg)
{
pthread_t thrd;
(void)pthread_create(& thrd, NULL, threaded_save_picture, (void *) optarg);
} /* background_picture_save() */