C++11使用标准库获取CPU物理核心数、动态创建线程

在本文中,将使用C++11标准线程库来获取CPU的物理核心数,并动态的创建和使用线程;

示例代码

#include <iostream>
#include <thread>
#include <string>

void _call(const std::string message) {

	/*
		std:cout 线程不同步/不安全
		std::cout << message << std::endl;
	*/

	printf("%s\n", message.c_str());

}

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

	//获取CPU核心
	int concurrency = std::thread::hardware_concurrency();

	std::cout << "hardware concurrency:" << concurrency << std::endl;

	std::thread* workers = new std::thread[concurrency];

	for (int i = 0; i < concurrency; i++) {

		std::string msg;
		msg = "id - " + std::to_string(i);

		workers[i] = std::thread(_call,msg);
	}

	for (int i = 0; i < concurrency; i++) {
		workers[i].join();
	}

	delete[] workers;

	_call("done");
}

运行效果

c++ thread

编译命令

代码保存为main.cpp

gcc -o app.exe main.cpp -lstdc++
分类: 计算机技术
推荐阅读:
Python调用谷歌翻译API实现文本翻译 使用Python向谷歌翻译URL进行GET请求,得到网页内容后使用正则表达式进行解析,获得翻译结果;
Rust实现线性搜索算法(Linear Search) 本文将使用Rust实现线性搜索算法(Linear Search);
Rust中的 if 表达式 if表达式允许根据条件的不同而执行不同的代码分支,如果条件满足,则运行某段代码,如果条件不满足则不运行这段代码;
Go语言获取操作系统类型 在Go语言中,你可以使用runtime包来获取操作系统类型。具体来说,你可以使用runtime.GOOS来获取操作系统类型的字符串表示。
PySide6隐藏和显示窗口(QWidget) PySide6.QtWidgets.QWidget类的成员函数hide()可用于隐藏窗口,show()可用于显示窗口;
Python hasattr()函数 hasattr() 是 Python 内置函数之一,用于检查一个对象是否具有指定的属性或方法。