题目地址:
https://www.lintcode.com/problem/2504/description
给定一个函数void parseLog(int x)
,其会打印Log x has been recorded.
。要求用多线程的方式打印出:
Log 1 has been recorded.
Log 2 has been recorded.
Log 3 has been recorded.
Log 4 has been recorded.
Log 5 has been recorded.
Log 6 has been recorded.
Log 7 has been recorded.
Log 8 has been recorded.
Log 9 has been recorded.
Log 10 has been recorded.
Log 11 has been recorded.
Log 12 has been recorded.
Log 13 has been recorded.
Log 14 has been recorded.
Log 15 has been recorded.
Log 16 has been recorded.
代码如下:
#include <iostream>
#include <thread>
#include <vector>
using namespace std;
class Solution {
public:
void createLog(void parseLog(int x)) {
// write your code
vector<thread *> v(16, nullptr);
for (int i = 0; i < 16; i++)
v[i] = new thread([i, parseLog] { parseLog(i + 1); });
for (auto *p : v) p->join();
}
};