std :: forward_list.push_front(std :: thread)无法编译

彼得·瓦尔加(Peter VARGA)

此代码无法编译:

类声明:

class threadController
{
private:
    static std::forward_list<std::thread>   threadList;
    static std::mutex                       mutexThreadList;

public:
    static void startAndAddThreadToList(int argc, char * argv []);

};

类定义:

std::forward_list<std::thread>  threadController::threadList;
std::mutex                      threadController::mutexThreadList;

void threadController::startAndAddThreadToList(int argc, char * argv [])
{
    // execute now the thread to avoid a delayed start because of the mutex lock
    std::thread threadInstance(threadCalculateOneInstrument, argc, argv);

    mutexThreadList.lock();
    threadList.push_front(threadInstance);
    mutexThreadList.unlock();
}

这是编译器错误:

/usr/local/include/c++/4.9.1/ext/new_allocator.h: In instantiation of ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::thread; _Args = {const std::thread&}; _Tp = std::thread]’:
/usr/local/include/c++/4.9.1/bits/alloc_traits.h:253:4:   required from ‘static std::_Require<typename std::allocator_traits<_Alloc>::__construct_helper<_Tp, _Args>::type> std::allocator_traits<_Alloc>::_S_construct(_Alloc&, _Tp*, _Args&& ...) [with _Tp = std::thread; _Args = {const std::thread&}; _Alloc = std::allocator<std::thread>; std::_Require<typename std::allocator_traits<_Alloc>::__construct_helper<_Tp, _Args>::type> = void]’
/usr/local/include/c++/4.9.1/bits/alloc_traits.h:399:57:   required from ‘static decltype (_S_construct(__a, __p, (forward<_Args>)(std::allocator_traits::construct::__args)...)) std::allocator_traits<_Alloc>::construct(_Alloc&, _Tp*, _Args&& ...) [with _Tp = std::thread; _Args = {const std::thread&}; _Alloc = std::allocator<std::thread>; decltype (_S_construct(__a, __p, (forward<_Args>)(std::allocator_traits::construct::__args)...)) = <type error>]’
/usr/local/include/c++/4.9.1/bits/forward_list.h:357:42:   required from ‘std::_Fwd_list_base<_Tp, _Alloc>::_Node* std::_Fwd_list_base<_Tp, _Alloc>::_M_create_node(_Args&& ...) [with _Args = {const std::thread&}; _Tp = std::thread; _Alloc = std::allocator<std::thread>; std::_Fwd_list_base<_Tp, _Alloc>::_Node = std::_Fwd_list_node<std::thread>]’
/usr/local/include/c++/4.9.1/bits/forward_list.tcc:71:64:   required from ‘std::_Fwd_list_node_base* std::_Fwd_list_base<_Tp, _Alloc>::_M_insert_after(std::_Fwd_list_base<_Tp, _Alloc>::const_iterator, _Args&& ...) [with _Args = {const std::thread&}; _Tp = std::thread; _Alloc = std::allocator<std::thread>; std::_Fwd_list_base<_Tp, _Alloc>::const_iterator = std::_Fwd_list_const_iterator<std::thread>]’
/usr/local/include/c++/4.9.1/bits/forward_list.h:803:9:   required from ‘void std::forward_list<_Tp, _Alloc>::push_front(const _Tp&) [with _Tp = std::thread; _Alloc = std::allocator<std::thread>]’
../source/threadController.cpp:27:38:   required from here
/usr/local/include/c++/4.9.1/ext/new_allocator.h:120:4: error: use of deleted function ‘std::thread::thread(const std::thread&)’

我的意图是实现线程列表。线程以不确定的执行时间运行。“控制”线程每隔10秒检查一次列表中的线程。如果线程完成,则为该线程调用thread函数detach()以释放资源。

加利克

不允许复制std::thread对象,可以这样使用emplace

threadList.emplace_front(threadCalculateOneInstrument, argc, argv);

请参阅: std :: forward_list :: emplace_front()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: forward_list.push_front(std :: thread)无法编译

来自分类Dev

对结构对象使用forward_list :: push_front()

来自分类Dev

为什么std :: forward_list ::: remove和std :: erase <std :: forward_list>具有不同的值类型?

来自分类Dev

std :: forward_list和序列概念要求

来自分类Dev

Gnome的gslist比std :: forward_list有什么优势?

来自分类Dev

O(1)之后std :: forward_list的emplace_如何?

来自分类Dev

如何删除存储在std :: forward_list中的动态元素

来自分类Dev

为什么return {};不适用于std :: forward_list?

来自分类Dev

您可以在遍历std :: forward_list时将其删除吗?

来自分类Dev

为什么`return {};`不适用于`std :: forward_list`?

来自分类Dev

C ++ STL-为什么std :: forward_list没有size()方法?

来自分类Dev

是否在空std :: forward_list中定义了before_begin()之后的元素?

来自分类Dev

std :: forward_list是否支持手动重新指向?

来自分类Dev

混合std :: move()和std :: thread无法编译

来自分类Dev

std :: move对比std :: forward

来自分类Dev

std :: forward与std :: move的用法

来自分类Dev

在带有std :: ref的std :: thread中调用带有地址清理的std :: invoke(std :: forward(...))时发生奇怪的行为

来自分类Dev

std :: find()无法使用gcc进行编译

来自分类Dev

C ++ std :: bind通用引用无法编译

来自分类Dev

std :: multiset比较器无法编译

来自分类Dev

在std :: map中使用std :: less无法编译

来自分类Dev

std :: forward <Args>还是std :: forward <Args ...>?

来自分类Dev

std :: vector的std :: thread后代

来自分类Dev

无法反序列化std :: list <std :: string>

来自分类Dev

无法将参数传递给std :: thread?

来自分类Dev

无法理解std :: thread的用法

来自分类Dev

同步push_back和std :: thread

来自分类Dev

std :: queue pop push thread safety

来自分类Dev

同步push_back和std :: thread

Related 相关文章

  1. 1

    std :: forward_list.push_front(std :: thread)无法编译

  2. 2

    对结构对象使用forward_list :: push_front()

  3. 3

    为什么std :: forward_list ::: remove和std :: erase <std :: forward_list>具有不同的值类型?

  4. 4

    std :: forward_list和序列概念要求

  5. 5

    Gnome的gslist比std :: forward_list有什么优势?

  6. 6

    O(1)之后std :: forward_list的emplace_如何?

  7. 7

    如何删除存储在std :: forward_list中的动态元素

  8. 8

    为什么return {};不适用于std :: forward_list?

  9. 9

    您可以在遍历std :: forward_list时将其删除吗?

  10. 10

    为什么`return {};`不适用于`std :: forward_list`?

  11. 11

    C ++ STL-为什么std :: forward_list没有size()方法?

  12. 12

    是否在空std :: forward_list中定义了before_begin()之后的元素?

  13. 13

    std :: forward_list是否支持手动重新指向?

  14. 14

    混合std :: move()和std :: thread无法编译

  15. 15

    std :: move对比std :: forward

  16. 16

    std :: forward与std :: move的用法

  17. 17

    在带有std :: ref的std :: thread中调用带有地址清理的std :: invoke(std :: forward(...))时发生奇怪的行为

  18. 18

    std :: find()无法使用gcc进行编译

  19. 19

    C ++ std :: bind通用引用无法编译

  20. 20

    std :: multiset比较器无法编译

  21. 21

    在std :: map中使用std :: less无法编译

  22. 22

    std :: forward <Args>还是std :: forward <Args ...>?

  23. 23

    std :: vector的std :: thread后代

  24. 24

    无法反序列化std :: list <std :: string>

  25. 25

    无法将参数传递给std :: thread?

  26. 26

    无法理解std :: thread的用法

  27. 27

    同步push_back和std :: thread

  28. 28

    std :: queue pop push thread safety

  29. 29

    同步push_back和std :: thread

热门标签

归档