0

所以我正在将代码修改为多线程,我已经阅读了几篇文章但没有找到我的答案,我有 Main,A 类,B 类,现在我想知道是否可以在 B 类中编写线程所以当当 main 调用 class a 时, this 又调用 class b 并且在这里创建了踏板,而不是从子类中的 main 中创建。谢谢。

主要的

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

您在这里混合了类和线程,可能会让自己感到困惑......如果您当前的应用程序是单线程的,那么您将拥有一个执行线程。您可以创建更多线程,它们创建的类的实例并不重要(除了实例的范围,可能让线程引用脱离范围,因此它们将是不可控的)。没有例子,我不能多说。

于 2012-05-29T12:21:48.913 回答
0

线程是独立的,无论是哪个其他线程创建它们。他们都是一样的。线程 A 可以创建线程 B,线程 B 创建线程 C,线程 C 创建线程 D,并且它们都将是同一种线程。

您可以从任何您想要的地方创建它们,只需遵循文档并记住注意事项(例如将 scoped_ptr 用于超出范围的 RAII 线程对象,从而导致对象崩溃)。

于 2012-05-29T12:45:38.627 回答