这是简单的c++;程序多线程? 我对C++有点新,但我想知道这个基本的(可能是草率的)程序是否一次运行多个线程,或者它是否只是池: 这是一个控制台应用程序,运行在Visual C++ 2015: #include <string> #include "stdafx.h" #include <iostream> #include <sstream> #include <thread> using namespace std; #include <stdio.h> int temp1 = 0; int num1 = 0; int temp2 = 0; int num2 = 0; void math1() { int running_total = 23; for (int i = 0; i < 999999999; i++) { running_total = 58 * running_total + i; } } int math2() { int running_total = 23; for (int i = 0; i < 999999999; i++) { running_total = 58 * running_total + i; } return 0; } int main() { unsigned concurentThreadsSupported = std::thread::hardware_concurrency(); cout << "Current Number of CPU threads: " << concurentThreadsSupported << endl; thread t1(math1); thread t2(math2); t1.join(); t2.join(); cout << "1: " << num1 << endl; cout << "2: " << num2 << endl; system("pause"); return 0; }

这是简单的c++;程序多线程? 我对C++有点新,但我想知道这个基本的(可能是草率的)程序是否一次运行多个线程,或者它是否只是池: 这是一个控制台应用程序,运行在Visual C++ 2015: #include <string> #include "stdafx.h" #include <iostream> #include <sstream> #include <thread> using namespace std; #include <stdio.h> int temp1 = 0; int num1 = 0; int temp2 = 0; int num2 = 0; void math1() { int running_total = 23; for (int i = 0; i < 999999999; i++) { running_total = 58 * running_total + i; } } int math2() { int running_total = 23; for (int i = 0; i < 999999999; i++) { running_total = 58 * running_total + i; } return 0; } int main() { unsigned concurentThreadsSupported = std::thread::hardware_concurrency(); cout << "Current Number of CPU threads: " << concurentThreadsSupported << endl; thread t1(math1); thread t2(math2); t1.join(); t2.join(); cout << "1: " << num1 << endl; cout << "2: " << num2 << endl; system("pause"); return 0; },c++,multithreading,visual-studio,C++,Multithreading,Visual Studio,它使用了约13%的CPU,持续了近7秒 这实际上是多线程吗?代码>线程t1(math1);螺纹t2(math2);t1.join();t2.连接()等待t1完成,同时运行t2。math1和math2函数做同样的事情,因此它们将一次完成大约,这是最佳的(也可能只是一个函数) 根据您看到的数字,您显然拥有一个具有8个逻辑核的CPU。多线程版本使用两个硬件线程(2/8)=25%,而单线程版本仅使用一个(1/8)=12.5%。它的运行速度也慢了两倍,很简单。嗯,是的。有三个线程(main,t1,t2)。

它使用了约13%的CPU,持续了近7秒

这实际上是多线程吗?

代码>线程t1(math1);螺纹t2(math2);t1.join();t2.连接()等待
t1
完成,同时运行
t2
math1
math2
函数做同样的事情,因此它们将一次完成大约,这是最佳的(也可能只是一个函数)


根据您看到的数字,您显然拥有一个具有8个逻辑核的CPU。多线程版本使用两个硬件线程(2/8)=25%,而单线程版本仅使用一个(1/8)=12.5%。它的运行速度也慢了两倍,很简单。

嗯,是的。有三个线程(
main
t1
t2
)。它们都没有做任何特别有趣的事情,但肯定是多线程的…(是的,我有8个内核)所以你要说的是,两个线程都在同时运行,但程序会被搁置,直到两个线程都完成了吗?@CyberDude是的,这就是
std::thread:join
所做的。在这种情况下,没关系,他们一起结束。在第二个示例中,很明显这两个线程不会同时运行。谢谢。我也知道它很草率,我只是在试验它,但是如果我写一个像这样的程序(一次有多个线程),它会工作吗?我能告诉你什么。。。如果你把每件事都做好,它就会起作用。
thread t1(math1);
t1.join();
thread t2(math2);
t2.join();