1.创建一维数组并赋初始值
int array[100]; //创建数组并赋随机值
srand((unsigned)time(NULL));
for (int i = 0; i < 100; i++)
{
array[i] = rand() % 1000 + 1;
}
2.线程入口函数(睡眠大法核心)
// 线程入口函数
void myprint(int inum)
{
Sleep(inum);
cout << inum << endl;
}
3.创建和等待多个线程
// 创建和等待多个线程
vector<thread>mythreads;
4.创建多个线程,线程入口函数统一使用myprint
// 创建多个线程,线程入口函数统一使用myprint.
for (int i = 0; i < 100; i++)
{
// 创建了多个线程,同时这10个已经开始执行了
mythreads.push_back(thread(myprint, array[i]));
}
5.等待线程都返回
for (auto iter = mythreads.begin(); iter != mythreads.end(); ++iter)
{
iter->join(); // 等待线程都返回
}
最终的代码
#include <iostream>
#include <thread>
#include <vector>
#include<Windows.h>
using namespace std;
// 线程入口函数
void myprint(int inum)
{
Sleep(inum);
cout << inum << endl;
}
int main(int argc, char* argv[]) {
int array[100];//创建数组并赋随机值
srand((unsigned)time(NULL));
for (int i = 0; i < 100; i++)
{
array[i] = rand() % 1000 + 1;
}
// 创建和等待多个线程
vector<thread>mythreads;
// 创建多个线程,线程入口函数统一使用myprint.
for (int i = 0; i < 100; i++)
{
mythreads.push_back(thread(myprint, array[i])); // 创建了多个线程,同时这10个已经开始执行了
}
for (auto iter = mythreads.begin(); iter != mythreads.end(); ++iter)
{
iter->join(); // 等待线程都返回
}
return 0;
}