私はubuntu 10.04にclang + llvm 3.0をコンパイルしてインストールしました。また、svnからlibC++をインストールしました。 libC++の状態がスレッドサポートが完了していることを示すので、私はstd :: asyncを試したかったのです。だから私はstd :: async in clang 3.0 + libC++は動作しませんか?
にアンソニー・ウィリアムズによって与えられた例に従うと、ちょうどそれをコンパイルするためにマイナーな変更を行います。
#include <future>
#include <iostream>
int calculate_the_answer_to_LtUaE()
{
return 42;
}
void do_stuff()
{
std::cout << "doing stuff" << std::endl;
}
int main()
{
std::future<int> the_answer=std::async(calculate_the_answer_to_LtUaE);
do_stuff();
std::cout<<"The answer to life, the universe and everything is "
<<the_answer.get()<<std::endl;
}
を私はコンパイル
打ち鳴らす++と--std = C++ 0x -stdlib = libC++ -lpthread async.cpp
ただし、実行されて常にコアダンプで終了します。
もの 人生、宇宙、すべての答えをやっは
は私がコアダンプをチェックし、それは(私はかなりヒントを得ることはありません)このようなスタック
を示し(コアダンプ)中止されます#0 0x00007fd0a1a7ba75 in raise() from /lib/libc.so.6 #1 0x00007fd0a1a7f5c0 in abort() from /lib/libc.so.6 #2 0x00007fd0a22a735b in std::exception_ptr::~exception_ptr (this=) at ../src/exception.cpp:130 #3 0x0000000000404178 in void std::__1::__assoc_state::set_value(int&&)() #4 0x00000000004051ae in _ZNSt3__119__async_assoc_stateIiNS_12__async_funcIPFivEJEEEE9__executeEv() #5 0x0000000000404e00 in _ZNSt3__114__thread_proxyINS_5tupleIJMNS_19__async_assoc_stateIiNS_12__async_funcIPFivEJEEEEEFvvEPS7_EEEEEPvSC_() #6 0x00007fd0a250f9ca in start_thread() from /lib/libpthread.so.0 #7 0x00007fd0a1b2e70d in clone() from /lib/libc.so.6 #8 0x0000000000000000 in ??()
誰もがなぜアイデアを持っていますか? moshbearさんのコメントで示唆したように、私が見
doing stuff
The answer to life, the universe and everything is 42
のlibC++のソースを検査:
clang++ -std=c++0x -stdlib=libc++ async.cpp
とプログラムの出力を:
アボートとは、アサーションが失敗したことを意味します。 exception.cppのassert()を130行目の近くに置いてください.gdbを使用して地元の人をアボートして分析することを強くお勧めします。 – moshbear