Pasar un objeto de función C ++ a la función pthread_create como rutina de subproceso

Sé que la rutina de subproceso que se pasa a pthread_create API tiene el prototipo de

void *threadproc(void *).

Me preguntaba si es posible usar un objeto de función C ++ como una rutina de subprocesos.

Aquí está mi código:

Ejecución :: ejecutar el método toma untiempo_t variable y afunctor como parámetros Genera un subproceso POSIX en el que gira hasta que el tiempo de ejecución programado es actual y ejecuta algún trabajo.

#include <pthread.h>
#include <ctime>
#include <unistd.h>
#include <iostream>
using namespace std;

class ThreadFunctor
{
public:
  void *operator()(time_t runTime)
  {
      time_t curTime;
      double timeDiff;

      time(&curTime);
      timeDiff = difftime(runTime, curTime);

      if (timeDiff > 0)
      {
          sleep(timeDiff);
      }

      //
      // doSomething();
      //

      return NULL;
  }
};

class Execution
{
public:
  Execution() {}
  int run(time_t scheduledTime, ThreadFunctor &threadProc)
  {
      int rc = pthread_create(&mThread, NULL, threadProc, &scheduledTime);
      if (rc != 0)
      {
          cerr << "Thread creation failed\n";
          return -1;
      }
      return 0;
  }

private:
  pthread_t mThread;
};

Preguntas:

¿Puedo usar un objeto de función como función de hilo? ¿Cómo?

¿Cómo paso los parámetros al método operator () del objeto de función?

En este código, el proceso primario finaliza mientras el subproceso secundario aún se está ejecutando. Porque no queremos bloquear la llamada del método run (). ¿Es esta una buena practica? ¿El hilo huérfano causará problemas aquí?

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta