如何在另一个函数内调用一个线程并在main中定义?

时间:2015-06-10 05:28:51

标签: c++ multithreading

我正在做一个关于c ++的代码。现在我对线程函数或基本的c ++概念感到困惑。我有一个头文件,函数文件和一个主函数文件。

header.h

class Employee : public Library
{

private:

pthread_t my_thread;//thread declare

public:

Employee();
int issueBook();

};

的main.cpp

class threadClass
{
public:

void *worker_thread(void *arg)
{
    char *curtime;

    char *bk_time = (char *)arg;

    time_t now = time(0);

    curtime = ctime(&now);

    pthread_exit(NULL);
  }
 };

int main()
{
  Employee emp ;
  emp.issueBook(); //calling function
}

和function.cpp

int Employee :: issueBook()
{
   int ret =0;

   ret =  pthread_create(&my_thread, NULL, &worker_thread,(void *)temp->book_time);//thread calling with a function name and argument
}

如何从main.cpp文件中调用function.cpp文件中定义的线程函数?我可以使用类threadClass的对象调用吗?我可以在threadClass文件中获取此function.cpp对象吗?

1 个答案:

答案 0 :(得分:0)

你的代码有什么问题,pthread_create需要一个函数指针作为线程入口点,而你提供& worker_thread,它不是一个函数,而是一个threadClass的成员函数。

您有两种选择:

  1. 摆脱threadClass将worker_thread转换为函数
  2. 声明worker_thread statis,并将& threadClass :: worker_thread传递给pthread_create