尝试使用已删除的功能

时间:2015-03-01 01:40:20

标签: c++ multithreading

从我在网上收集的内容来看,这很可能与尝试复制一个帖子有关(你无法做到)。我不确定为什么会出现这个问题。我确实怀疑它出现在哪条线上。

工作线程定义:

void WorkerThread(SharedLList<uint32_t> *workQueue, std::mutex *dataLock, uint8_t *data, uint32_t *seenStates, int depth)

调用函数中的代码:

SharedLList<uint32_t> workQueue;
std::mutex lock;
uint8_t *stateDepths = new uint8_t[s.GetMaxRank()];
uint32_t seenStates = 1;
int currDepth = 0;

    for (int i = 0; i < numThreads; i++)
    {
        threads[i] = new std::thread(WorkerThread, std::ref(workQueue), std::ref(lock), stateDepths, std::ref(seenStates), currDepth);
    }

主题    - &GT;语义问题        - &GT;尝试使用已删除的功能

这是一行:

   __invoke(_VSTD::move(_VSTD::get<0>(__t)), _VSTD::move(_VSTD::get<_Indices>(__t))...);

如何解决此问题?我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您的线程函数被声明为接受指针作为参数。然而,您将引用作为参数传递。除uint8_t *data之外的所有指针参数都存在此不匹配。