Pthread instance variable running methods from class
我正在尝试设计一个活动的对象,它一旦被创建,就基本上运行在它自己的线程中。到目前为止,我所做的是创建一个包含pthread实例变量的类,然后在该类的构造函数中,它应该发送pthread。
由于pthread_create()接受一个函数参数,所以我将传递一个在类实现文件中设置的run()函数。
到目前为止,我的run()函数不是类的一部分,它只是位于实现文件中,但是当我试图编译它时,我得到一个错误消息说:
1 | "error: ‘run’ was not declared in this scope" |
现在我明白了为什么函数run()超出了作用域,但是将run()作为私有函数添加到活动对象类中是正确的,还是如果存在多个这样的对象会导致其他问题?见鬼,它会不会只实例化其中一个就产生问题?
好的,这是代码,我只是觉得没什么关系。这是myclass.hpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class MyClass { private: pthread_t thread; ObjectManager *queue; int error; // just added this, but the compiler still doesn't like it void *run(void *arg); public: MyClass(); ~MyClass(); void start(); } |
下面是实现myclass.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include"MyClass.hpp" void MyClass::start() { if (queue == NULL) return; int status = pthread_create(&thread, NULL, run, (void *) queue); if (status != 0) { error = status; return; } } void *MyClass::run(void *arg) { bool finished = false; while (!finished) { // blah blah blah } return NULL; } |
编译问题很可能是在您的构造函数中引用了
至于您的问题,使它成为一个类成员,而不工作,因为