Multithreading Visual Studio C++

Multithreading Visual Studio C++

本文关键字:C++ Studio Visual Multithreading      更新时间:2023-10-16

我使用的是visualstudio,下面的线程示例会生成错误,

std::thread thread_1(addToCatalogVariablee(stage_completion, m_load_profiles, m_load_stable_instances, m_load_instance_round, m_load_instance_struct));
std::thread thread_2(printReport(m_load_stable_instances, m_file_name_in));

printReport和addToCatalogVariableee都在一个单独的头文件和类文件中定义。然而,visual studio将这两条线标记为,

错误:没有构造函数的实例与参数列表匹配参数类型为:(void)

我将进行一个大胆的猜测:您希望在一个单独的线程中调用printReport,并将两个成员变量作为参数传递。这不是您对示例代码所做的操作。您正在调用此线程中的函数,然后将该函数的结果传递给std::thread的构造函数。

如果printReport是一个普通函数,或者是一个静态成员函数,那么您需要的只是:

std::thread thread_2(printReport, m_load_stable_instances, m_file_name_in);

如果printReport是此类的非静态成员函数,那么您将需要:

std::thread thread_2(&ThisClass::PrintReport, this, 
                        m_load_stable_instances, m_file_name_in);