gpt4 book ai didi

c++ - 使用 Boost 在 C++ 中并发

转载 作者:行者123 更新时间:2023-11-28 00:59:48 24 4
gpt4 key购买 nike

我有一个非常简单的 C++ 函数:

double testSpeed()
{
using namespace boost;
int temp = 0;

timer aTimer;
//1 billion iterations.
for(int i = 0; i < 1000000000; i++) {
temp = temp + i;
}
double elapsedSec = aTimer.elapsed();
double speed = 1.0/elapsedSec;

return speed;
}

我想用多线程运行这个函数。我在网上看到例子,我可以做如下:

 // start two new threads that calls the "hello_world" function
boost::thread my_thread1(&testSpeed);
boost::thread my_thread2(&testSpeed);

// wait for both threads to finish
my_thread1.join();
my_thread2.join();

但是,这将运行两个线程,每个线程将迭代十亿次,对吗?我想要两个线程同时完成工作,这样整个事情就会运行得更快。我不在乎关于同步,这只是一个速度测试。

谢谢!

最佳答案

可能有更好的方法,但这应该可行,它传递变量的范围以迭代到线程中,它还在线程启动之前启动一个计时器,并在它们都启动后在计时器之后结束完毕。如何将其扩展到更多线程应该是非常明显的。

void testSpeed(int start, int end)
{
int temp = 0;
for(int i = start; i < end; i++)
{
temp = temp + i;
}
}


using namespace boost;

timer aTimer;

// start two new threads that calls the "hello_world" function

boost::thread my_thread1(&testSpeed, 0, 500000000);
boost::thread my_thread2(&testSpeed, 500000000, 1000000000);

// wait for both threads to finish
my_thread1.join();
my_thread2.join();

double elapsedSec = aTimer.elapsed();
double speed = 1.0/elapsedSec;

关于c++ - 使用 Boost 在 C++ 中并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9372594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com