- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上是标题
#include <iostream>
#include <future>
class A
{
public:
A () {};
A (const A& a) {std::cout<<"A copy\n";};
A (A&& a) noexcept {std::cout<<"A move\n";};
~A () {std::cout<<"A dest\n";};
void fun () { std::cout<<"fun\n";}
};
int main()
{
A a;
std::future<void> f = std::async([](A a) { a.fun(); }, std::move(a));
f.wait();
return 0;
}
A move
A move
A dest
A move
fun
A dest
A dest
A dest
最佳答案
首先,将值传递给 async()
不需要移动,转发引用只是绑定(bind)到原始值。
然后,不要猜测,只需询问程序本身为什么要进行复制/移动。
$ g++ --version; g++ -g ./a.cpp -pthread
g++ (Debian 8.3.0-6) 8.3.0
$ gdb ./a.out
GNU gdb (Debian 8.2.1-2+b3) 8.2.1
Reading symbols from ./a.out...done.
(gdb) b 9
Breakpoint 1 at 0x5b78: file ./a.cpp, line 9.
(gdb) r
Starting program: ./a.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, A::A (this=0x7ffffffedbdf, a=...) at ./a.cpp:9
9 A (A&& a) noexcept {std::cout<<"A move\n";};
(gdb) bt
#0 A::A (this=0x7ffffffedbdf, a=...) at ./a.cpp:9
#1 0x00000000080070ba in std::_Head_base<1ul, A, true>::_Head_base<A> (this=0x7ffffffedbdf, __h=...) at /usr/include/c++/8/tuple:87
#2 0x0000000008007088 in std::_Tuple_impl<1ul, A>::_Tuple_impl<A> (this=0x7ffffffedbdf, __head=...) at /usr/include/c++/8/tuple:366
#3 0x000000000800286c in std::_Tuple_impl<0, main()::<lambda(A)>, A>::_Tuple_impl<main()::<lambda(A)>, A>(<lambda(A)> &&, A &&) (this=0x7ffffffedbdf, __head=...)
at /usr/include/c++/8/tuple:218
#4 0x0000000008002831 in std::tuple<main()::<lambda(A)>, A>::tuple<main()::<lambda(A)>, A>(<lambda(A)> &&, A &&) (this=0x7ffffffedbdf, __a1=..., __a2=...)
at /usr/include/c++/8/tuple:972
#5 0x00000000080028d1 in std::thread::__make_invoker<main()::<lambda(A)>, A>(<lambda(A)> &&, A &&) (__callable=..., __args#0=...) at /usr/include/c++/8/thread:268
#6 0x0000000008002600 in std::async<main()::<lambda(A)>, A>(std::launch, <lambda(A)> &&, A &&) (__policy=(std::launch::async | std::launch::deferred), __fn=..., __args#0=...)
at /usr/include/c++/8/future:1719
#7 0x00000000080024d3 in std::async<main()::<lambda(A)>, A>(<lambda(A)> &&, A &&) (__fn=..., __args#0=...) at /usr/include/c++/8/future:1749
#8 0x000000000800241c in main () at ./a.cpp:17
(gdb) c
Continuing.
A move
Breakpoint 1, A::A (this=0x8022ec8, a=...) at ./a.cpp:9
9 A (A&& a) noexcept {std::cout<<"A move\n";};
(gdb) bt
#0 A::A (this=0x8022ec8, a=...) at ./a.cpp:9
#1 0x00000000080070ba in std::_Head_base<1ul, A, true>::_Head_base<A> (this=0x8022ec8, __h=...) at /usr/include/c++/8/tuple:87
#2 0x0000000008007056 in std::_Tuple_impl<1ul, A>::_Tuple_impl (this=0x8022ec8, __in=...) at /usr/include/c++/8/tuple:373
#3 0x0000000008002ab0 in std::_Tuple_impl<0, main()::<lambda(A)>, A>::_Tuple_impl(std::_Tuple_impl<0, main()::<lambda(A)>, A> &&) (this=0x8022ec8, __in=...)
at /usr/include/c++/8/tuple:227
#4 0x00000000080027e9 in std::tuple<main()::<lambda(A)>, A>::tuple(std::tuple<main()::<lambda(A)>, A> &&) (this=0x8022ec8) at /usr/include/c++/8/tuple:987
#5 0x0000000008003be3 in std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >::_Invoker(std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (this=0x8022ec8)
at /usr/include/c++/8/thread:231
#6 0x0000000008003da5 in std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (this=0x8022e90, __fn=...) at /usr/include/c++/8/future:1662
#7 0x0000000008003a61 in __gnu_cxx::new_allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >::construct<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> *, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (this=0x7ffffffeda2f,
__p=0x8022e90, __args#0=...) at /usr/include/c++/8/ext/new_allocator.h:136
#8 0x0000000008003816 in std::allocator_traits<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> > >::construct<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::allocator_traits<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> > >::allocator_type &, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> *, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (__a=..., __p=0x8022e90,
__args#0=...) at /usr/include/c++/8/bits/alloc_traits.h:475
#9 0x000000000800344f in std::_Sp_counted_ptr_inplace<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (this=0x8022e80, __a=...) at /usr/include/c++/8/bits/shared_ptr_base.h:545
#10 0x000000000800306f in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> *&, std::_Sp_alloc_shared_tag<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> > >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (
this=0x7ffffffedb78, __p=@0x7ffffffedb70: 0x0, __a=...) at /usr/include/c++/8/bits/shared_ptr_base.h:677
#11 0x0000000008002f4c in std::__shared_ptr<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::_Sp_alloc_shared_tag<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> > >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (this=0x7ffffffedb70, __tag=...) at /usr/include/c++/8/bits/shared_ptr_base.h:1342
#12 0x0000000008002ea1 in std::shared_ptr<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >::shared_ptr<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::_Sp_alloc_shared_tag<std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> > >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (this=0x7ffffffedb70, __tag=...) at /usr/include/c++/8/bits/shared_ptr.h:359
#13 0x0000000008002cfd in std::allocate_shared<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(const std::allocator<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> > &, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (__a=...,
__args#0=...) at /usr/include/c++/8/bits/shared_ptr.h:706
#14 0x0000000008002b49 in std::make_shared<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > &&) (__args#0=...) at /usr/include/c++/8/bits/shared_ptr.h:722
#15 0x00000000080029c4 in std::__future_base::_S_make_async_state<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> > >(std::thread::_Invoker<std::tuple<main()::<lambda(A)>,--Type <RET> for more, q to quit, c to continue without paging--c
A> > &&) (__fn=...) at /usr/include/c++/8/future:1705
#16 0x0000000008002613 in std::async<main()::<lambda(A)>, A>(std::launch, <lambda(A)> &&, A &&) (__policy=(std::launch::async | std::launch::deferred), __fn=..., __args#0=...) at /usr/include/c++/8/future:1719
#17 0x00000000080024d3 in std::async<main()::<lambda(A)>, A>(<lambda(A)> &&, A &&) (__fn=..., __args#0=...) at /usr/include/c++/8/future:1749
#18 0x000000000800241c in main () at ./a.cpp:17
(gdb) c
Continuing.
A move
[New Thread 0x7fffff250700 (LWP 141)]
A dest
[Switching to Thread 0x7fffff250700 (LWP 141)]
Thread 2 "a.out" hit Breakpoint 1, A::A (this=0x7fffff24f98f, a=...) at ./a.cpp:9
9 A (A&& a) noexcept {std::cout<<"A move\n";};
(gdb) bt
#0 A::A (this=0x7fffff24f98f, a=...) at ./a.cpp:9
#1 0x000000000800291c in std::__invoke_impl<void, main()::<lambda(A)>, A>(std::__invoke_other, <lambda(A)> &&, A &&) (__f=..., __args#0=...)
at /usr/include/c++/8/bits/invoke.h:60
#2 0x0000000008002525 in std::__invoke<main()::<lambda(A)>, A>(<lambda(A)> &&, A &&) (__fn=..., __args#0=...) at /usr/include/c++/8/bits/invoke.h:95
#3 0x00000000080046bb in std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >::_M_invoke<0, 1>(std::_Index_tuple<0, 1>) (this=0x8022ec8) at /usr/include/c++/8/thread:244
#4 0x0000000008004642 in std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >::operator()(void) (this=0x8022ec8) at /usr/include/c++/8/thread:253
#5 0x0000000008004413 in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>::operator()(void) const (this=0x7fffff24fdd0) at /usr/include/c++/8/future:1362
#6 0x000000000800413d in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>(), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/8/bits/std_function.h:283
#7 0x0000000008006067 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const (this=0x7fffff24fdd0)
at /usr/include/c++/8/bits/std_function.h:687
#8 0x000000000800599b in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (this=0x8022e90, __f=0x7fffff24fdd0, __did_set=0x7fffff24fd47) at /usr/include/c++/8/future:561
#9 0x0000000008006db3 in std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__f=
@0x7fffff24fd60: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x8005974 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>, __t=@0x7fffff24fd58: 0x8022e90, __args#0=@0x7fffff24fd50: 0x7fffff24fdd0, __args#1=@0x7fffff24fd48: 0x7fffff24fd47)
at /usr/include/c++/8/bits/invoke.h:73
#10 0x0000000008006633 in std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__fn=
@0x7fffff24fd60: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x8005974 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>, __args#0=@0x7fffff24fd58: 0x8022e90, __args#1=@0x7fffff24fd50: 0x7fffff24fdd0, __args#2=@0x7fffff24fd48: 0x7fffff24fd47)
at /usr/include/c++/8/bits/invoke.h:95
#11 0x0000000008005e30 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}::operator()() const (this=0x7fffff24fce0) at /usr/include/c++/8/mutex:672
#12 0x0000000008005e5b in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#2}::operator()() const (this=0x0) at /usr/include/c++/8/mutex:677
#13 0x0000000008005e6c in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_bas--Type <RET> for more, q to quit, c to continue without paging--c
e::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#2}::_FUN() () at /usr/include/c++/8/mutex:677
#14 0x00007fffff45e997 in __pthread_once_slow (once_control=0x8022ea8, init_routine=0x7fffff6dae20 <__once_proxy>) at pthread_once.c:116
#15 0x00000000080023bd in __gthread_once (__once=0x8022ea8, __func=0x7fffff6dae20 <__once_proxy>) at /usr/include/x86_64-linux-gnu/c++/8/bits/gthr-default.h:699
#16 0x0000000008005f05 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__once=..., __f=@0x7fffff24fd60: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x8005974 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>, __args#0=@0x7fffff24fd58: 0x8022e90, __args#1=@0x7fffff24fd50: 0x7fffff24fdd0, __args#2=@0x7fffff24fd48: 0x7fffff24fd47) at /usr/include/c++/8/mutex:684
#17 0x000000000800577c in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) (this=0x8022e90, __res=..., __ignore_failure=false) at /usr/include/c++/8/future:401
#18 0x0000000008003c49 in std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>::<lambda()>::operator()(void) const (this=0x8022e90) at /usr/include/c++/8/future:1667
#19 0x000000000800431d in std::__invoke_impl<void, std::__future_base::_Async_state_impl<_BoundFn, _Res>::_Async_state_impl(_BoundFn&&) [with _BoundFn = std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >; _Res = void]::<lambda()> >(std::__invoke_other, std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>::<lambda()> &&) (__f=...) at /usr/include/c++/8/bits/invoke.h:60
#20 0x000000000800401e in std::__invoke<std::__future_base::_Async_state_impl<_BoundFn, _Res>::_Async_state_impl(_BoundFn&&) [with _BoundFn = std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >; _Res = void]::<lambda()> >(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >, void>::<lambda()> &&) (__fn=...) at /usr/include/c++/8/bits/invoke.h:95
#21 0x0000000008004d80 in std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<_BoundFn, _Res>::_Async_state_impl(_BoundFn&&) [with _BoundFn = std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >; _Res = void]::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x8022f08) at /usr/include/c++/8/thread:244
#22 0x0000000008004cd6 in std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<_BoundFn, _Res>::_Async_state_impl(_BoundFn&&) [with _BoundFn = std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >; _Res = void]::<lambda()> > >::operator()(void) (this=0x8022f08) at /usr/include/c++/8/thread:253
#23 0x00000000080048b0 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::__future_base::_Async_state_impl<_BoundFn, _Res>::_Async_state_impl(_BoundFn&&) [with _BoundFn = std::thread::_Invoker<std::tuple<main()::<lambda(A)>, A> >; _Res = void]::<lambda()> > > >::_M_run(void) (this=0x8022f00) at /usr/include/c++/8/thread:196
#24 0x00007fffff6dbb2f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#25 0x00007fffff456fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#26 0x00007fffff3794cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) c
Continuing.
A move
fun
A dest
A dest
[Thread 0x7fffff250700 (LWP 141) exited]
A dest
[Inferior 1 (process 137) exited normally]
(gdb)
std::thread::__make_invoker()
)时。调用程序是一种打包的任务,以后可以作为一个单元执行。 async_state
对象中并将其存储在 future
( __future_base::_S_make_async_state()
) 中时_State::_M_run()
) 关于c++ - std::async 是如何工作的:为什么它调用复制/移动这么多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62051572/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!