包含线程函数的对象 vector 上的 C++ 错误

标签 c++ multithreading vector openframeworks

您知道有什么方法 (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/

相关文章:

python - 多线程 cstringio 在 ubuntu 14.04 上慢 17%

matrix - 深度学习模型中不同数量节点的直觉

c++ - 使用 C++ 查找与文本匹配的行号

c++ - 如果资源获取可能失败,如何实现 RAII

c++ - 在编译之前解析文件

multithreading - 线程因锁定的互斥锁而崩溃

c++ - qt设计器中所做的更改对应的代码位于哪里?

c++ - 在 C++ 中将 Mutex 和 lock_guard 与 vector 一起使用

Haskell如何打印可变向量

c# - 从矢量方向获得适当的旋转