您知道有什么方法 (C++) 可以创建包含线程函数的对象 vector 吗?理想情况下,该技术必须是跨平台的 (Win/OSX) 并且可以轻松移植到移动设备 (iOS)。它可以是非常基本的多线程,要并行运行的函数非常简单(但计算量大)。
我正在编写一个包含许多对象(属于同一类)的应用程序,这些对象具有非常复杂的数据结构,需要并行分析:虽然主应用程序线程负责与用户交互并渲染场景,但每个对象在单独的线程上并行分析其数据。
到目前为止,我尝试在 OpenFrameworks 中制作应用程序原型(prototype)(使用 ofThread),但是一旦我开始创建包含线程函数的对象 vector ,编译器就会抛出一些奇怪的错误(参见下文以供引用)。
(OpenFrameworks 示例)
class MyClass: public ofThread
{
int A, B, C;
void threadedFunction();
MyClass();
}
...如果我实例化类(运行它的方法,包括线程函数)没问题。
然后我创建一个此类的 vector :
// in main function
...
vector<MyClass> myList;
... 但是现在,一旦我尝试将类的一个实例添加到 vector 中,编译器就会失败,说它无法访问类 Poco:FastMutex (utils\ofthread.h(190 ): error C2248: 'Poco::FastMutex::FastMutex' : 无法访问类 'Poco::FastMutex' 和 Poco:Thread 中声明的私有(private)成员 (utils\ofthread.h(190): error C2248: 'Poco::Thread::Thread':无法访问类'Poco::Thread'中声明的私有(private)成员)
// in main function
...
myList.push_back(MyClass()); //ERROR!
.
// in main function
...
MyClass temp; //OK SO FAR
myList.push_back(temp); //ERROR!
欢迎任何帮助!
最佳答案
您不能复制互斥量。您的 push_back
函数尝试在 vector 中创建一个新的 MyClass
实例作为 temp
的拷贝。您可以改用智能指针 vector 。
关于包含线程函数的对象 vector 上的 C++ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20186479/