c_cpp 线程测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 线程测试相关的知识,希望对你有一定的参考价值。

void reduce(int *p, int idx, int num_thread) {
	int res = 0;
	for (int i = 0; i < 1000000.0 / num_thread; i++) {
		for (int j = 0 ; j < 10000; j++)
			res *= i;
	}
	p[idx] = res;
}

int main(int argc, char** argv) {

	for (int iter = 1; iter < 50; ++iter) {
		START_TIME_CLOCKER;
		const int num_thread = iter;
		int *p = new int[num_thread];
		memset(p, 0, sizeof(int)*(num_thread));
		std::vector<std::thread> threads;
		std::thread *thread_pool_ = new std::thread[num_thread];
		for (int i = 0; i < num_thread; i++) {
			threads.push_back(std::thread(reduce, p, i, num_thread));
		}
		std::for_each(threads.begin(), threads.end(), std::mem_fn(&std::thread::join));
		std::cout << "total time: " << DURATION_TIME_CLOCKER << std::endl;

		for (int i = 0; i < num_thread; i++) {
			std::cout << p[i] << " ";
		}
		std::cout << std::endl;
	}
}

以上是关于c_cpp 线程测试的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 多线程

c_cpp 多线程

c_cpp 在后台运行线程

c_cpp QT - 线程睡眠

c_cpp C - 线程

c_cpp 线程初始化示例