我想在我的程序中创建几个线程,在其中传递多个参数。我发现了这个例子,它表明你可以避免使用结构并将多个参数传递给一个线程。有效。或者我是这么想的。当我查看我的函数的持续时间时,它们花费了相同的时间。
我在亚马逊服务器上运行我的代码,所以我不确定问题出在服务器还是我的代码上。
编辑我添加了可执行代码并在我的本地机器上运行它。它似乎没有显示出好的结果。
#include <iostream>
#include <thread>
#include <future>
#include <unistd.h>
#include "time.h"
using namespace std;
void threadCallback(float &number)
{
sleep(10);
number = 10;
}
int main()
{
clock_t begin = clock();
for(int j = 0; j < 2; j++)
{
float fitness = 0;
threadCallback(fitness);
}
double duration = double(clock()-begin)/CLOCKS_PER_SEC;
std::cout << "Original duration \t\t\t" << duration << endl;
clock_t begin1 = clock();
float fitness1 = 0;
std::thread th1(threadCallback, std::ref(fitness1));
float fitness2 = 0;
std::thread th2(threadCallback, std::ref(fitness2));
th1.join();
th2.join();
double duration1 = double(clock()-begin1)/CLOCKS_PER_SEC;
cout << "My duration \t\t\t" << duration1 << endl;
return 0;
}
我很感激任何指导,因为我被困住了。
我得到的持续时间分别是:0,000095 和 0,000297。