多线程

时间:2018-03-11 02:05:35

标签: c++ multithreading synchronization boost-thread

我有一个小应用程序,我通过API使用一些库。这个库使用多线程,我无法弄清楚如何正确分配内存。

假设我有一个班级MyClass。该类具有函数myFunction和指针ptrToSomething。在类的构造函数中,我动态创建一个对象(不是只读的)并将其分配给ptrToSomething,然后我在myFunction中使用它。并且这个类只有一个实例。

使用单线程可以正常工作。但是我使用的库可能会在不同的线程中调用myFunction。这意味着每个线程ptrToSomething必须是唯一的。哦,这个库使用boost::thread

所以,这就是我的工作:

  1. 我创建了一个长度为ptrArray的数组n(用于n个线程),并使用构造函数中的对象对其进行初始化。
  2. boost:mutex内创建MyClass
  3. 为线程ID创建std::set<boost::thread::id> idSet
  4. 现在在myFunction我锁定互斥锁,找出当前线程的boost::this_thread::get_id() ID,将其插入idSet,找到std::set::find和{{1}的索引将std::distance分配给某个临时指针,解锁互斥锁并继续使用该函数。

    此代码确实有效,但我觉得非常低效

    有更优化的方法吗?或者对当前的修改进行某种修改?

    UPD。这样的事情。

    ptrToSomething[idx]

0 个答案:

没有答案