以下代码需要 pthread 链接选项才能编译,我不明白为什么。你有什么主意吗?
我正在使用 gcc 7.2.0
#include <future>
int sum = 0;
void func()
{
for(int i=0; i < 10; ++i)
sum +=i;
}
int main()
{
std::future<void> f = std::async(std::launch::async, func);
return 0;
}
编译
g++ -o test test.cpp
提供以下错误
/tmp/ccoEkyeZ.o: dans la fonction « std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (*)()> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<void (*)()> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (*)()> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<void (*)()> >&&)::{lambda()#1}&&) »:
test.cpp:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJPFvvEEEEEvEC4EOS8_EUlvE_JEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJPFvvEEEEEvEC4EOS8_EUlvE_JEEEOT_DpOT0_]+0x30): référence indéfinie vers « pthread_create »
collect2: error: ld returned 1 exit status
使用时
g++ -o test test.cpp -lpthread
没有问题。
这是正常的吗?我错过了什么吗?我的代码在某处没有 pthread_create