0

コードをマルチスレッドに変更しています。いくつかの記事を読みましたが、答えが見つかりませんでした。メイン、クラス A、クラス B があります。クラス b でスレッドをプログラムできるかどうかを知りたいので、メインがクラス a を呼び出すと、クラス b が呼び出されます。ここでは、サブクラスのメインからではなく、踏み板が作成されます。ありがとう。

主要

fr.place_sequences_to_nodes(&sequences,&leaf_nodes,reference_alignment,data_type‌​); 
int count = 1; root->name_internal_nodes(&count); 
root->start_alignment(&mf); 
ss.str(string()); 
ss << "Time main::align: "<< double(clock()-t_start)/CLOCKS_PER_SEC <<"\n";   
Log_output::write_out(ss.str(),"time"); 

ノード

void align_sequences(Model_factory *mf) 
{ 
    if(leaf) return; 
    left_child->align_sequences(mf); 
    right_child->align_sequences(mf); 
    this->align_sequences_this_node(mf); 
} 
4

2 に答える 2

3

ここでクラスとスレッドが混在していて、混乱している可能性があります...現在のアプリケーションがシングルスレッドの場合、実行スレッドは1つになります。より多くのスレッドを作成できます。それらが作成されたクラスのインスタンスは実際には重要ではありません (インスタンスのスコープを除いて、スレッド参照がスコープから外れて制御不能になる可能性があります)。例がなければ、これ以上は言えません。

于 2012-05-29T12:21:48.913 に答える
0

スレッドは、他のどのスレッドがスレッドを作成するかに関係なく、独立しています。それらはすべて同じです。スレッドAはスレッドBを作成し、スレッドCを作成してスレッドDを作成し、それらはすべて同じ種類のスレッドになります。

必要な場所から作成できます。ドキュメントに従って、注意事項を覚えておいてください(スコープ外になり、オブジェクトがクラッシュする原因となるRAIIスレッドオブジェクトに対してscoped_ptrを使用するなど)。

于 2012-05-29T12:45:38.627 に答える